728x90
문제 페이지에 접속하면 아래와 같은 코드를 확인할 수 있었다.
코드를 보면 앞서 풀었던 gremlin과 유사한 코드처럼 보이지만 큰 차이점이 있었다.
$query = "select id from prob_cobolt where id='{$_GET[id]}' and pw=md5('{$_GET[pw]}')";
echo "<hr>query : <strong>{$query}</strong><hr><br>";
$result = @mysqli_fetch_array(mysqli_query($db,$query));
if($result['id'] == 'admin') solve("cobolt");
쿼리문을 살펴보면 pw 즉, 비밀번호를 입력하는 부분에 해쉬함수인 md5가 추가된 것을 확인할 수 있었다.
그리고 앞선 gremlin 문제와 다르게 단순히 id가 존재하는지에 대한 조건이 아닌 id가 admin일때만 solve를 동작시키는 코드라고 볼 수 있다.
따라서 주소창의 퀴리문은 id가 admin이어야 하므로 id의 인자로 admin을 넣고, and pw=md5('{$_GET[pw]}')가 무시될 수 있도록 or '1'='1'을 추가하여 쿼리문이 무조건 참이 될 수 있도록 코드를 작성해보자.
?id=admin' or '1'='1 해당 부분을 주소창의 쿼리 부분에 넣어주니 문제를 해결할 수 있었다.
참고자료
https://man-25-1.tistory.com/79
https://g-idler.tistory.com/40
728x90
'CTF' 카테고리의 다른 글
[LOS] orc write-up (0) | 2023.11.01 |
---|---|
[LOS] goblin write-up (0) | 2023.11.01 |
[LOS] gremlin write-up (1) | 2023.11.01 |
[Dreamhack] simple_sqli write-up (1) | 2023.11.01 |
[RootMe] File upload - Double extensions write-up (0) | 2023.10.02 |