728x90
Lord of sql injection - Red dragon 풀이 |
다음은 빨간 용가리문제.! 뭔가 문제 패턴이 계속 바뀌어서 조금 재밌는것 같기도 하다..
문제 접근
if(preg_match('/prob|_|\./i', $_GET['id'])) exit("No Hack ~_~"); if(strlen($_GET['id']) > 7) exit("too long string"); $no = is_numeric($_GET['no']) ? $_GET['no'] : 1; $query = "select id from prob_red_dragon where id='{$_GET['id']}' and no={$no}"; |
필터링을 살펴보면, 특별한 것이없고 id의 입력에 길이 제한을 걸어두었다. 그리고 no를 입력할때 입력값이 숫자인지 아닌지 제한을 뒀다.
문제는 admin에 해당하는 no를 알아내야하는것이다.
?id=%27||no>%23&no=%0aany number |
위와 같이 쿼리를 작성하면
주석 처리때문에 'and no=이 주석처리되고 개행문자 뒤에 있는 숫자 100이 남게된다.
따라서 쿼리는 where id=''|| no> 100 으로 처리되는것이다. 이것을 이용해서 no의 정확한 숫자를 탐색해야하는데
일단 수작업으로 자리수를 알아낸 다음에 그 범위안에서 이진탐색을 통해 숫자를 구해야 할 것 같다
숫자를 10의 제곱수로 넣어보았을때
10^9 보다 작고 10^8보다 큰 수라는 것을 알아냈다.
이 사이의 범위에서 이진 탐색을 통해 admin에 해당하는 no를 탐색해보자.
조건이 참일때 출력되는 Hello admin 쿼리가 있으니 이를 이용해서 brute force를 진행할 것이다.
풀이
결과 no=586482014
728x90
'개인 공부 > WEB' 카테고리의 다른 글
[웹해킹] LOS 28 - (Frankenstein) (0) | 2021.07.03 |
---|---|
[웹해킹] LOS 27 - (Blue Dragon) (0) | 2021.07.03 |
[웹해킹] LOS 25 - (Green Dragon) (0) | 2021.07.03 |
[웹해킹] LOS 24 - (Evil_Wizard) (0) | 2021.07.03 |
[웹해킹] LOS 23 - (Hell_Fire) (0) | 2021.07.03 |
댓글