본문 바로가기
개인 공부/WEB

[웹해킹] LOS 26 - (Red Dragon)

by 아메리카노와떡볶이 2021. 7. 3.
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

댓글