반응형
해당 문제는 md5와 관련한 취약점 문제이다.
기존에 알아뒀던 것이 있어 금방 문제를 solve하였다.
문제 source-view를 이용하여 소스코드를 확인해보자.
1 2 3 4 5 6 7 8 9 10 | <?php if($_POST['id'] && $_POST['pw']){ $db = dbconnect(); $input_id = addslashes($_POST['id']); $input_pw = md5($_POST['pw'],true); $result = mysqli_fetch_array(mysqli_query($db,"select id from chall51 where id='{$input_id}' and pw='{$input_pw}'")); if($result['id']) solve(51); if(!$result['id']) echo "<center><font color=green><h1>Wrong</h1></font></center>"; } ?> | cs |
해당 문제를 보면 id는 addslashes를 이용하여 싱글쿼터를 차단하고 있으므로 pw를 이용하여야함을 확인할 수 있다.
이 때 pw를 보면 POST 방식으로 받는 값을 md5 함수로 변환하여 select하고 있는데 여기서 바로 느낌이 왔다.
확신이 든 것은 md5 함수의 raw_output 옵션이 true로 되어 있으며, select 구문의 결과 id가 특정되어 있지 않다는 점이다.
이게 무슨 말인지는 아래 링크를 통해 확인을 직접 해보길 바란다.
문제 solve할 때는 그냥 id에 임의의 문자열과 함께 링크에서 제공해준 문자열 [ 129581926211651571912466741651878684928 ]을 입력해주면 문제가 solve된다.
다음 사진과 같이 md5의 결과가 raw 형태로 출력된다면 마지막의 'or'8 로 인해 select 구문이 true가 되어 id가 출력되는 것이다.
반응형
'Solve Problem > Webhacking.kr' 카테고리의 다른 글
webhacking.kr old-40 writeup (1) | 2020.04.14 |
---|---|
webhacking.kr old-50 writeup (0) | 2020.04.14 |
webhacking.kr old-52 writeup (0) | 2020.04.14 |
webhacking.kr old-55 writeup (0) | 2020.04.13 |
webhacking.kr old-57 writeup (0) | 2020.04.13 |