일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- file upload
- THM
- Server Side Request Forgery
- War Game
- Cookie
- active recon
- access control
- tryhackme
- over the wire
- php To Do List
- sql injection
- ssrf
- php login page
- php file upload
- Leviathan
- Cryptography
- FTZ
- php 로그인 페이지 만들기
- SQLi
- 파일 업로드 취약점
- active reconnaissance
- BANDiT
- Reconnaissance
- php
- Recon
- php 파일 업로드하기
- overthewire
- privilege escalation
- OS Command Injection
- Authentication
- Today
- Total
목록SQLi (6)
R's Hacking Daily Log
How to detect SQL injection vulnerabilities 공격자의 입장에서 SQL injection 공격을 한다고 할 때, 1. ' 를 입력해서 에러가 발생하는지 확인 2. or '1' = '1와 같은 boolean 조건문 활용 3. case then 문 사용 4. time delay 와 같은 기술을 Lab을 통해 접해보았다. sql injection에서는 web page에 결과를 포함하느냐 안 하느냐의 여부가 중요한 정보가 될 수 있으며 web page에서의 차이를 찾을 수 없다면 time delay와 같이 부가적인 기술을 사용할 수 있다는 것도 배울 수 있었다! 또한 mysql의 information_scheme같이 meta data를 저장하는 table을 활용하여 어떤 테이블이..
이번에 살펴본 TOPIC은 Blind SQL injection!! :) 앞에서 살펴본 상황과는 다르게 Blind SQL injection은 DB 에러나 SQL 결과가 반영된 HTTP 응답을 받을 수 없는 상황에서 사용된다. :) SQL 결과가 HTTP 응답에 포함되지 않는다는 건, 이전에 풀어본 lab에서와 같이 username이나 password가 페이지에 출력되지 않는다는 뜻이다. :) 이번에 살펴볼 application은 cookie를 사용해 인가된 사용자로부터 온 요청인지 확인한다. :) 주입된 SQL로 username과 같은 세부정보는 알아낼 수 없지만 cookie가 유효한 경우에는 "Welcome Back" 문구를 출력하고 유효하지 않은 경우에는 아무것도 출력하지 않는다. :) Welcome ..
이번에 정리할 SQL injection 내용은 Examining the database in SQL injection Attack이다. :) 앞에서 공부한 내용 중에서 username & password column을 갖는 users table이 있는 걸 공격자가 알고 이 내용을 조회하고 싶어 하는 상황을 가정했다. :) 사실 이 상황을 살펴보면 공격자는 users table에 대한 정보를 알아내는 단계를 미리 거쳐야 한다. :) Examining the database는 조회하고자 하는 "other database"의 테이블 정보를 수집하는 과정에서 사용할 수 있는 SQL injection이라 할 수 있다. Querying the database type and version 어떤 data base를 ..
SQLi (3)에서 살펴본 내용과 관련된 port swigger의 lab을 풀어보자! 첫 번째 lab에서는 column의 개수를 알아내라고 한다. url 창에 ' union select null--을 입력했더니 server error가 발생했다. null을 두 번 넣고 세 번 넣고 했더니..! column 개수가 3개인 걸 확인할 수 있었다. 두 번째 lab에선 제공한 특정 문자열을 가지고 어떤 column이 string data를 갖는지 확인하라고 한다. column의 개수가 3개인 건 첫 번째 lab에서 알아냈으니 총 3번만 시도해보면 알 수 있다. 두 번째 column 자리에 문자열을 넣고 확인해보니 공격에 성공했다. 이로써 3개의 column 중에서 두 번째 column은 string data를 ..
SQLi과 관련하여 살펴볼 두 번째 case는 "Subverting application logic"이다. :) application의 로직대로 따르지 않을 테야!! 라는 느낌이다. :) 이해를 돕기 위해 사용자의 username & password로 로그인을 하는 application이 있다고 상상해 보자. wiener이라는 계정을 로그인하기 위해 사용자는 username & password를 입력했다. SELECT * FROM users WHERE username = 'wiener' AND password = 'bluecheese' 서버는 사용자의 input 값을 가지고 DB에 username은 wiener이고 password는 bluecheese인 user 내용을 확인해 볼 것이다. 이 결과를 토대..
SQL Injection 줄여서 SQLi라고 불리는 SQL injection은 쉽게 말해 SQL을 주입함으로써 실행되는 공격이다. * SQL = Data Base(DB) 생성, 조회, 삭제, 수정 등 DB를 다룰 때 사용하는 language로 Structured Query Language의 약자이다. 그래서 보통 "query"라는 단어가 나오면 DB와 관련된 내용이라 생각하면 된다. 사용자가 서버에 요청을 보내면 서버는 필요에 따라 DB에서 데이터를 조회, 수정, 삭제와 같은 역할을 수행한다. ! 이때 SQL을 이용해 일반적으로 조회할 수 없는 내용을 출력시키거나 DB 안에 있는 데이터를 수정, 삭제하는 등의 악의적인 내용을 실행하는 공격을 SQL injection(SQLi) 이라고 한다. SQLi도 상..