| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Lord of SQL Injection
- DreamHack
- XSS
- Los
- Remote File Inclusion
- wargame
- TeamH4C
- Insecure CAPTCHA
- 빡공팟 6기
- File Upload Vulnerability
- sql injection
- 웹 해킹
- Hackerfactory
- SuNiNaTas
- Dremhack
- DVWA
- Weak Session IDs
- Web Hacking
- 드림핵
- 정보보호
- 써니나타스
- bypass CAPTCHA
- 해커팩토리
- webhacking.kr
- 워게임
- DOM-Based XSS
- H4CKINGGAME
- Cross Site Scripting
- 정보보안
- 빡공팟 4기
- Today
- Total
도카이트
[Wargame] Webhacking.kr - old 51 본문
문제 화면

- Admin page 를 출력하며, ID와 PW를 입력할 수 있는 폼이 출력된다.
- 소스코드를 확인해보도록 하자 !
소스코드

- id 값에 대하여 addslashes 함수를 적용하고 있으며,
- pw의 경우는 md5 함수가 적용되어 있고, 추가로 true 인자 값이 작성되어 있다.
- admin 으로 로그인 성공하면 해당 문제가 solve 되는 듯 하다.
md5 함수에 true 값 존재?
md5([입력 값],true) 형태의 함수는 실행 결과에 ‘=’ 문자열이 포함되면 해당 쿼리문이 참이 되는
취약점이 존재한다. 해당 소스코드를 예시로 살펴보면 입력받는 pw 값이 싱글 쿼터로 감싸져 있다.
pw='{$input_pw}' // $input_pw = md5($_POST['pw'],true);
이때 md5(example,true)의 실행 결과로 '=' 값이 포함되어 있다면..
pw=''='' 형태가 되어 쿼리문에서의 결과가 참이 되는 것을 확인할 수 있다.
이러한 취약한 부분을 이용하여 무작위 정수 값을 md5 함수에 대입 후 해시화하여 ‘=’ 을 포함한 결과를 출력하는 정수 대입값을 pw 부분에 입력 시 쿼리 실행문이 참이 되어 로그인이 가능해진다.
‘=’ 을 포함한 값을 찾기 위해 Python의 hashlib 모듈을 이용해서 값을 찾아보도록 하자 !
md5.py 작성 및 실행 결과
import hashlib
for i in range(0, 10000000):
if b"'='" in hashlib.md5(str(i).encode()).digest():
print('{}'.format(i))
break

- 0부터 10000000 까지의 정수를 대입하여 md5 해시화를 진행한다.
- 이 중 ‘=’ 을 포함하는 값을 print 하도록 for 문을 작성하였다.
- 실행 결과 1839431을 출력하며 이는 md5 해시화 하였을 경우 ‘=’ 값을 포함하는 정수이다.
- 획득한 값을 이용해 메인 페이지에서 admin 계정으로 로그인을 시도하면.. (ID : admin / PW : 1839431)
- 성공적으로 문제를 solve 할 수 있다 !
'Wargame > Webhacking.kr' 카테고리의 다른 글
| [Wargame] Webhacking.kr - old 58 (0) | 2022.06.20 |
|---|---|
| [Wargame] Webhacking.kr - old 54 (0) | 2022.06.20 |
| [Wargame] Webhacking.kr - old 50 (0) | 2022.06.20 |
| [Wargame] Webhacking.kr - old 34 (0) | 2022.06.20 |
| [Wargame] Webhacking.kr - old 33 (0) | 2022.06.20 |