Lord of sql injection - Orge 풀이 |
los 7번 Orge에 대한 풀이 포스팅입니다.
역시나 6번과 마찬가지로 or 과 and 에 필터링이 걸려있습니다.
문제 접근
제가 색칠한 라인을 살펴보면, 이 문제는 4번 orc문제와 유사한 admin의 password를 구하는 문제입니다. 단 and와 or에 필터링이 걸려있다는 점에 주의해야합니다.
<?php include "./config.php"; login_chk(); $db = dbconnect(); if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~"); if(preg_match('/or|and/i', $_GET[pw])) exit("HeHe"); $query = "select id from prob_orge where id='guest' and pw='{$_GET[pw]}'"; echo "<hr>query : <strong>{$query}</strong><hr><br>"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "<h2>Hello {$result[id]}</h2>"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_orge where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orge"); highlight_file(__FILE__); ?> |
https://man-25-1.tistory.com/81?category=1021805
orc문제에서와 마찬가지로 password의 길이를 구하고, 한자리씩 알아가는 방법으로 해결해보겠습니다.
풀이 1. password의 길이구하기
먼저 우리의 도구가 되어주는 부분이 있습니다.
$query = "select id from prob_orge where id='guest' and pw='{$_GET[pw]}'"; echo "<hr>query : <strong>{$query}</strong><hr><br>"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result['id']) echo "<h2>Hello {$result[id]}</h2>"; |
따라서 ?pw=' || id='admin' && length(pw)= (any number) %23에서 어떠한 숫자를 넣었을때 Hello가 출력된다면,
password의 길이를 구한것입니다.
이전에 orc 문제에서 패스워드 길이가 8이었기때문에 테스트 겸 한번 찍어봤는데 바로 패스워드 길이가 8인것을 구했습니다. 하지만 저는 공부하는 입장이기때문에 이런 방식은 옳지않고.. 파이썬을 통해서 길이를 구해보겠습니다.
혹시나 파이썬 프로그램 작성시에 쿠키를 어디서 확인해야하는지 모르시는분들을 위해서,
F12번을 눌러 Application TAB 에서 확인하시거나
Burp Suite를 이용해서 los 문제 페이지를 잡아서 확인할 수 있으니 참고하시면 됩니다.
ocr에서 이미 작성한 코드가 있기때문에 and와 or 기호만 수정해주었습니다.
이미 예상된대로 길이는 8입니다.
풀이 2. 완전한 password 구하기
길이가 8인 완전한 password를 구하기 위해서, 마찬가지로 파이썬을 이용합니다.
결과는 다음과 같습니다
결과
'개인 공부 > WEB' 카테고리의 다른 글
[웹해킹] LOS 9 - (Vampire) (0) | 2021.05.30 |
---|---|
[웹해킹] LOS 8 - (Troll) (0) | 2021.05.30 |
[웹해킹] LOS 6 - (Darkelf) (0) | 2021.05.30 |
[웹해킹] LOS 4 - (Orc) (0) | 2021.05.30 |
[웹해킹] LOS 3 - (Goblin) (0) | 2021.05.29 |
댓글