본문 바로가기
3. 웹 애플리케이션 취약점 진단/Lord of Sql Injection

lord of sql injection 26번 - red_dragon

by Robert8478 2023. 12. 22.

이번문제는 조금 어려웠다. id는 값을 받는데 7자를 넘으면 안되고
no는 숫자외의 값이 들어가면 다 1로 리턴시킨다.
고민해본 결과 id에 쿼리를 넣고 no에 비교할 숫자를 넣어야 하는 문제이다.

우선 id 값에 admin%23 을 넣어주면 뒤의 구문이 주석화 되어 hello admin이 뜬다.
이를 이용하면 될것 같다. 우리가 찾아야하는건 admin의 no 값이다.
그러니 id값은 ''로 막아버린뒤 바로 or (||) 구문을 이용해서 no의 비교를 수행한다.
뒤의 and no=를 주석처리 한 뒤 줄바꿈하여 no에 숫자값을 넣어준다면 정상적으로 쿼리가 들어갈것이다.

id='||no>%23&no=%0a10000 이라고 넣어주었다. id 값은 다행히 7자를 안넘어 들어가고 no도 줄바꿈하여 숫자를 넣어주었으므로 id값에 넣은 쿼리와 붙어서 수행된다. 이제 no만 찾으면 된다.
노가다라 이진탐색 코드를 활용하여 프로그램하는것이 좋지만 이번에는 한번 노가다로 찾아보았다.

뒤의 숫자를 바꾸었는데 저 큰 숫자까지는 hello admin이 나오고

590000000 부터는 사라졌다. 그렇다는건 no 값은 580000000 에서 590000000 값 사이라는 것이다.
이런식으로 노가다를 할 수 있다.

쭉 수행해본 결과 586482014에서 딱 메시지 출력이 안됬다. 그렇다는건 admin의 no값은 586482014 라는것

no값에 대입하여 클리어