Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 문제풀이
- 시스템
- 해킹
- 버그헌팅
- 정보보호
- DVP
- 블록체인
- xcz
- WarGame
- 자료구조
- wargame.kr
- 네퓨즈
- 포너블
- 정보보안
- 포렌식
- 보안
- webhacking
- webhacking.kr
- Pwnable
- kangsecu
- 코드게이트
- 버그바운티
- hacking
- 웹해킹
- C언어
- 프로그래밍
- CTF
- 워게임
- nefus
- 선린인터넷고등학교
Archives
- Today
- Total
kangsecu's B1og
[wargame.kr] strcmp 문제풀이 본문
[wargame.kr] 에 strcmp 문제를 풀어보도록 하겠습니다.
문제에서 만약 너가 strcmp를 우회하는걸 안다면 너는 flag를 얻을 수 있어! 라고 합니다.
Start를 누르면 이러한 화면이 출력됩니다. 소스를 보도록 하겠습니다.
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 | <?php require("../lib.php"); // for auth_code function $password = sha1(md5(rand().file_get_contents("/var/lib/dummy_file")).rand()); if (isset($_GET['view-source'])) { show_source(__FILE__); exit(); }else if(isset($_POST['password'])){ sleep(1); // do not brute force! if (strcmp($_POST['password'], $password) == 0) { echo "Congratulations! Flag is <b>" . auth_code("strcmp") ."</b>"; exit(); } else { echo "Wrong password.."; } } ?> <br /> <br /> <form method="POST"> password : <input type="text" name="password" /> <input type="submit" value="chk"> </form> <br /> <a href="?view-source">view-source</a> | cs |
이렇게 코드가 있습니다. 랜덤값으로 password를 가져오는데 입력값이 password와 같아야 문제가 해결됩니다. brute force를 광속으로 하지 않는 이상 거의 불가능에 가깝습니다. 하지만 strcmp함수의 취약점을 이용하면 쉽게 문제해결이 가능합니다. strcmp 함수는 문자열과 배열을 비교했을때 NULL,0을 반환합니다.
Exploit Vector
strcmp함수는 두 문자열을 비교해서 같을 경우 0을 반환하는데, 문자열과 배열을 비교하면 같지 않더라도 0 을 출력하게 됩니다.
Exploit
하지만 그냥 password[]=123이라는 값을 전송하기엔 post형식이라 싫습니다.
이렇게 name에 password를 배열형식의 password[]로 변경해주면 됩니다. 그럼 자연스럽게 strcmp가 랜덤으로 가져오는 password값과 배열형식의 password[]로 부터 입력받는 값을 비교하여 0을 출력합니다.
strcmp Clear!
'Web Hacking > wargame.kr' 카테고리의 다른 글
[wargame.kr] Md5 password 문제풀이 (0) | 2018.02.18 |
---|---|
[wargame.kr] php? c? 문제풀이 (0) | 2018.02.17 |
[Wargame.kr] Fly me to the moon 문제풀이 (0) | 2018.02.17 |
[wargame.kr] tmtitter 문제풀이 (0) | 2018.02.16 |
[Wargame.kr] DB is really GOOD 문제풀이 (0) | 2017.12.26 |