일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 워게임풀이
- wargame.kr
- WTF_CODE
- 치트엔진 튜토리얼
- 3번문제
- WarGame
- 포렌식
- xcz.kr 문제풀이
- reversing
- suninatas
- 써니나타스
- CodeEngn
- Web
- cheatengine
- xcz.kr
- 6번문제
- CheatEngine Tutorial
- Couldn't invoke the file
- 리버싱
- 시스템
- xcz.kr prob
- 1번문제
- 오토잇디컴파일
- 8번문제
- Basic RCE
- 치트엔진
- BasicRCE
- Couldn't in
- 치트엔진 튜토리얼 게임
- 워게임
- Today
- Total
HackChang
[Wargame.kr] 8번 문제 풀이 md5 password 본문
이번 문제는 md5함수에 대한 문제로 보인다.
Start를 눌러 페이지를 이동해보도록 하겠다.
위와 같은 페이지를 볼 수 있었고, 소스를 보도록 하겠다.
소스를 보면
$row=@mysql_fetch_array(mysql_query("select * from admin_password where password='".md5($ps,true)."'"));
위와 같이 sql문을 날리는 것을 볼 수 있었다. 이에 대해 SQL인젝션을 시도하고 싶었지만,
mysql_real_escape_string을 통해 SQL인젝션을 방지하는 것을 볼 수 있다.
문제에서 md5('value', true)라는 힌트로 보아 md5함수에 취약점이 존재한다고 생각했고,
php의 md5함수에 대해 검색을 해봤다.
raw_output를 TRUE로 지정하게되면 취약점이 발생한다는 것을 검색을 통해 알았고,
바이너리 형식과 문자열 형식이 어떤식으로 나오는지 파이썬으로 간단하게 예제를 만들어봤다.
v_hex가 row_output에 대한 FALSE를 나타내고,
v_bin이 row_output에 대한 TRUE를 나타낸다.
select * from admin_password where password='에 대하여 해당 SQL을 우회할 수 있는 방법을 생각해봤다.
password에 대한 참이 나올 조건으로 다음과 같이 생각을 했다.
select * from admin_password where password=''='' 다음과 같이 '=''로 password를 인식하게 된다면
조건이 참이 되면서 admin_password를 알 수 있을 것이라고 생각했다.
password에 대한 바이너리 값('=')을 알기 위해 간단하게 파이썬으로 작성해봤다.
위와 같이 작성을 했고, 결과 값으로
위의 결과를 얻을 수 있었다.
위의 값을 인증해보도록 하겠다.
이렇게 password를 알 수 있었고, 인증을 통해 클리어를 했다.
'W4RG4M3 > W3B' 카테고리의 다른 글
[Wargame.kr] 7번 문제 풀이 strcmp (0) | 2021.07.28 |
---|---|
[Wargame.kr] 6번 문제 풀이 fly me to the moon (0) | 2021.07.25 |
[Wargame.kr] 4번 문제 풀이 login filtering (0) | 2021.07.23 |
[Wargame.kr] 3번 문제 풀이 QR Code Puzzle (0) | 2021.07.23 |
[Wargame.kr] 2번 문제 풀이 already got (0) | 2021.07.23 |