반응형
해당 문제는 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가 특정되어 있지 않다는 점이다.
이게 무슨 말인지는 아래 링크를 통해 확인을 직접 해보길 바란다.

링크 : https://cvk.posthaven.com/sql-injection-with-raw-md5-hashes

문제 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
블로그 이미지

rootable

,