일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Cross Site Scripting
- Web Hacking
- 웹 해킹
- Hackerfactory
- 해커팩토리
- 빡공팟 4기
- Dremhack
- 정보보안
- Los
- Weak Session IDs
- 드림핵
- 써니나타스
- TeamH4C
- wargame
- Lord of SQL Injection
- XSS
- Insecure CAPTCHA
- SuNiNaTas
- 정보보호
- DOM-Based XSS
- Remote File Inclusion
- webhacking.kr
- 빡공팟 6기
- 워게임
- sql injection
- H4CKINGGAME
- bypass CAPTCHA
- File Upload Vulnerability
- DVWA
- DreamHack
- Today
- Total
도카이트
[Wargame] Webhacking.kr - old 50 본문
문제 화면
- SQL Injection 문제이다. 최초 접속 시 id와 pw에 guest 값이 입력되어 있다.
- 소스 코드를 확인해보도록 하자 !
소스 코드
- id와 pw 값에 대해 addslashes 함수가 적용되어 있으며,
- mb_convert_encoding 함수를 통해 id 값에 대해 euc-kr 을 utf-8 형식으로 인코딩한다.
- 또한 from과 pw, \, 공백, %, = 에 대해 preg_match 함수를 통해 필터링하고 있으며,
- id 값에 대해 union 문자열을 대소문자 구별 없이 필터링하고 있다.
- $result 의 lv 값이 3 이 되면 문제가 solve 되는 방식이다.
- lv 칼럼값을 출력하는 쿼리문이므로, union select를 이용해 lv이 3이 되도록 구문을 작성하면 될 듯 하다.
실행되는 쿼리 구문을 살펴보았을 때, id=’/* and pw=md5(’*/union select 3#’ 을 입력하여,
lv이 3인 값을 출력하도록 유도하면 될 듯 하다. id 값에 싱글 쿼터와 주석의 시작 부분을 삽입하기에,
이후 and pw=md5(’ 부분 까지는 주석화가 되며, pw 값에 대해서는 union 문자열에 대한 필터링이
없으므로, union select 를 사용하여 값을 출력하게 유도해보자 !
주석 구문을 이용한 SQL Injection
- 위 예제에서 사용한 구문에 대한 설명은 다음과 같다.
- ?id=%a1’/*&pw=*/union select 3#
- id 값에 입력된 싱클 쿼터 이후 /* 주석을 통해 pw 값까지의 쿼리 구문을 주석화 시킨다.
- 싱글 쿼터 앞에 입력된 %a1 에 대해 아마 궁금한 점이 있을 것이다..
EUC-KR을 UTF-8로 인코딩 변환 시, addslashes 함수 우회 가능 취약점
PHP 에서 멀티 바이트 문자(%a1~%fe) 처리 시 멀티 바이트 문자 뒤에 \ 가 존재하는 경우,
하나의 문자로 처리가 되는 문제가 있다. 즉 addslashes 함수로 인해 삽입된 \ 앞에 의도적으로
멀티 바이트 문자를 삽입하면 \ 를 하나의 문자로 인식하여 무효화되어 addslashes 함수를 우회할 수 있다.
- 다시, SQL Injection 공격에 사용할 구문을 URL 인코딩 하여 작성한다.
- URL 인코딩 된 SQL Injection 페이로드는 다음과 같다.
- ?id=%a1%27%2F%2A&pw=%2A%2Funion%09select%093%23
- 공백에 대한 필터링의 경우 %09 (Tab) 을 이용하여 우회한다.
- 페이로드 작성 후 페이지 이동 시, 성공적으로 문제를 solve 할 수 있다 !
'Wargame > Webhacking.kr' 카테고리의 다른 글
[Wargame] Webhacking.kr - old 54 (0) | 2022.06.20 |
---|---|
[Wargame] Webhacking.kr - old 51 (0) | 2022.06.20 |
[Wargame] Webhacking.kr - old 34 (0) | 2022.06.20 |
[Wargame] Webhacking.kr - old 33 (0) | 2022.06.20 |
[Wargame] Webhacking.kr - old 32 (0) | 2022.06.20 |