[+] 개인적인 공부이니 틀린부분 지적 ㄳ
- SQL Injection(CAPTCHA)는 CAPTCHA를 우회하는 것이 아니라. CAPTCHA환경에서 SQL Injection을 진행하는 것.
- CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)는 컴퓨터와 사람을 구분짓는 완전한 자동 튜링 테스트.
- 우리가 평소에 보는 보트가 들어간 사진을 3개 고르시오. <- 이거임 ㅇㅇ
- CAPTCHA는 SQL Injection(GET/Search)와 너어어어어어무 똑같아서 아래 글 보고오면 그냥 프리패스..
https://revi1337.tistory.com/51?category=896718
[bWAPP] SQL Injection (GET/Search)
[+] 개인적인 공부이니 틀린부분 지적 ㄳ - SQL Injection은 사용자가 입력한 값을 서버에서 검증하지 않고, 입력한 값이 데이터베이스 쿼리 일부분으로 포함되 어DB의 민감데이터를 노출, 갈취, 인
revi1337.tistory.com
Low 레벨
1. 기본 페이지와 동작
- CAPTCHA 환경의 SQL Injection 기본 페이지.
- URL에 manual_interv.php 파일을 사용한다라는 것을 인지.
- 정상적으로 CAPTCHA인증을 하면. SQL Injecton(GET/Search)랑 UI 똑같음.
- 인증을 수행한 후, sqli_9.php페이지로 Redirection 된것 을 확인.
- 솔직히, bWAPP에서 이걸 왜 따로 빼놓은지 정말 이해가 안감 ㄹㅇㅋㅋ
- 아니나 다를까 manual_interv.php에 가서 보니. 응답값으로 sqli_9.php로 Redirection하라는 코드가 있음.ㅇㅇ
2. SQL Injection (' 와 "를 사용해 SQL Injection 가능여부 확인.)
- 더블 쿼터( " ) 입력시 사진.
- " 란 제목의 영화를 찾을 수 없다고 나옴.
- 입력값을 문자열 취급하기 때문에, select 컬럼명 from 테이블명 where title=' " ' 로 되는것.
- 싱글 쿼터( ' ) 입력시 사진.
- Mysql 오류 출력.
- select 컬럼명 from 테이블명 where title=' ' ' 형식으로 쿼리문이 조회되는데, 싱글쿼터 한개가 닫히지 않고 열려
있기 떄문에 오류 출력, 때문에 SQL Intection 가능. 그냥... GET/Search이랑 똑같...
3. ' or 1=1 # 를 사용했을때의 동작 확인
- select 컬럼명 from 테이블명 where=' ' or 1=1 #형식으로 되겠쥬?
- where절이 그냥 True 값이기 때문에 모든 레코드를 출력해줌.
4. Union SQL Injection
- "' union select 1,2,3,4,5,6,7 # 를 입력했을 때의 사진.
- union은 두개의 쿼리문의 결과를 합쳐 하나의 테이블로 출력해주는 역할. 자세한건 맨위링크에 자세하게 써놓음
- DB서버의 컬럼과 일치하는 컬럼들 출력.
4-1. Union SQL Injection
- "' union select 1,@@version,@@datadir,4,5,6,7 # 입력한 사진.
- DB시스템함수를 사용하여 DB서버에 대한 정보 확인.
- @@version은 DB서버의 운영체제정보, @@datadir은 DB서버가 존재하는 디렉터리 출력.
4-2. Union SQL Injection
- "' union select 1,concat(id,name),3,4,5,6,7 from testdb.testtable1 #
- union 구문으로 다른 데이터베이스의 내용까지 출력가능.
- concat은 몇개의 컬럼을 하나의 컬럼에 합쳐서 보여주는 역할. 컬럼계의..union이랄까...
- 자세한건 맨위링크에 자세하게 써놓음
5. Union SQL Injection with LIMIT
- "' union select 1,concat(id,name),3,4,5,6,7 from testdb.testtable1 LIMIT 3,4 # 를 입력했을때의 사진.
- LIMIT 을 사용하면 DB에서 반환시킨 레코드 값들을 기준으로 출력 개수를 정해 줄 수 있음.
- LIMIT은 아래 링크 참조
https://revi1337.tistory.com/43?category=875464
[bWAPP] SQL Injection (GET/Select)
[+] 개인적인 공부이니 틀린부분 지적 ㄳ Low 레벨 1. 기본 페이지 - 영화를 선택하면, 선택한 영화에 대한 정보를 출력해주는 폼을 가지고 있다. - 이름이 Select인 이유는 영화를 선택할 수 있는 폼
revi1337.tistory.com
6. Low레벨 대응방안 보기
- functions_external.php의 no_check함수 사용
- 입력값 검증을 하지않고 바로 리턴하는것을 확인 가능
High 레벨
1. SQL Injection
- "' union select 1,concat(id,name),3,4,5,6,7 from testdb.testtable1 LIMIT 3,4 # 를 입력했을때의 사진.
- SQL Injection이 통하지 않음
2. High 레벨 대응방안 보기
- functions_external.php의 sqli_check_2함수 사용
- mysql_real_escape_string 함수를 사용하여 대응
- 문자열에서 특수 문자열을 이스케이프하여 mysql_query() 수행시 안전하게 질의할 수 있도록 함.
'WebHacking > bWAPP' 카테고리의 다른 글
[bWAPP] SQL Injection (Login Form/Users) (0) | 2021.10.18 |
---|---|
[bWAPP] SQL Injection (Login Form/Hero) (0) | 2021.10.18 |
[bWAPP] SQL Injection (AJAX/JSON/JQuery) (0) | 2021.10.15 |
[bWAPP] SQL Injection (Metasploit) (0) | 2021.10.15 |
[bWAPP] SQL Injection (SQLMAP) (0) | 2021.10.15 |