728x90
Lord of sql injection - Darkknight 풀이 |
los 12번 darkknight에 대한 풀이 포스팅입니다.
문제 접근
마찬가지로 연속해서, blind sql injection 문제입니다.
필터링은 ' , substr , ascii, = 4가지에 걸려져있고 no 값을 입력받는 것이 보입니다.
$query = "select id from prob_darkknight where id='guest' and pw='{$_GET[pw]}' and no={$_GET[no]}"; 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>"; |
역시나 blind sql injection 문제에서 큰 힌트가 되어주는 Hello admin 출력문구를 통해 브루트 포싱을 해서
길이를 구하고, 완전한 password를 구하는 과정을 거치면 됩니다.
11번 golem에서 사용한 풀이와 동일한 과정을 진행해보겠습니다.
1. pw의 길이구하기
single 쿼터에 필터링이 걸려져있을때 대표적인 우회방법으로 double 쿼터 " " 를 사용하거나, char함수를 통해 우회하는 방법이 있는데 저는 이번에는 더블쿼터를 사용했습니다. (더블 쿼터는 아스키코드로 %22입니다)
이번 문제의 비밀번호도 8인것을 확인할 수 있습니다.
2. 완전한 password구하기
필터링은 ' , substr , ascii, = 4가지에 걸려져있으므로, substr은 이전문제에서 찾았듯이 mid함수로 대체할 수 있고
ascii를 대체하는 함수를 찾아야하는데 ord함수가 그 역할을 대체해줍니다.
이 방법말고 코드에서 비교하는 str(j)에 chr함수를 씌워서 문제를 해결하는 방법도 존재합니다.
그 이외의 필터링은 이전 문제와 동일한 방식으로 해결했습니다.
password는 0b70ea1f입니다.
728x90
'개인 공부 > WEB' 카테고리의 다른 글
[웹해킹] LOS 14 - (Giant) (0) | 2021.06.19 |
---|---|
[웹해킹] LOS 13 - (Bugbear) (0) | 2021.06.19 |
[웹해킹] LOS 11 - (Golem) (0) | 2021.06.19 |
[웹해킹] LOS 10 - (Skeleton) (0) | 2021.05.30 |
[웹해킹] LOS 9 - (Vampire) (0) | 2021.05.30 |
댓글