728x90
Lord of sql injection - Cobolt 풀이 |
먼저 php문을 살펴보겠습니다.
1번 문제와 동일하게 필터링조건이 걸려있고, 문제 자체도 유사해보입니다.
$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에 해쉬함수가 추가된 것을 확인할 수 있습니다. 그리고 이번에는 1번 문제와 다르게
단순히 id가 존재하는지에 대한 조건이 아니라, id가 admin일때만 solve()를 동작시킬 수 있습니다.
따라서 1번 문제를 통해 2번 문제에 대한 힌트를 얻어보면, 1번에서는 id=1' or 1=1 # 을 통해 pw에 대한 검사를 주석처리해버렸습니다.
따라서 이번에는 admin의 id가 필요하므로 id=admin '# 을 통해 뒤의 구문을 다 주석처리해버리면, admin의 id를 select해 올 수 있습니다.
그렇게 admin 계정을 select 한다면, solve() 동작을 위한 조건문이 true가 되고 문제를 해결할 수 있습니다.
따라서 기억해야할 핵심은 # 주석처리를 통한 조건부 무력화 방법이라고 생각할 수 있습니다.
결과
728x90
'개인 공부 > WEB' 카테고리의 다른 글
[웹해킹] LOS 6 - (Darkelf) (0) | 2021.05.30 |
---|---|
[웹해킹] LOS 4 - (Orc) (0) | 2021.05.30 |
[웹해킹] LOS 3 - (Goblin) (0) | 2021.05.29 |
[웹해킹] LOS 1 - (Gremlin) (0) | 2021.05.29 |
[웹해킹] 1주차 리뷰 (0) | 2021.05.10 |
댓글