Question 17. lonely guys
문제
Blind SQLi challenge.
Can you SQLi with 'order by' in expression?
풀이
문제 접근 시 애인을 구하는 사람의 목록과 source-page를 확인할 수 있는 링크가 제공된다.
req_single 를 누르면 재정렬이 진행되며 내림차순 및 오름차순으로 정렬되는걸로 확인된다.
소스코드를 확인해 보자, 필요한 부분의 대한 내용만 가져온 내용이다 중요한점은
1) 21번 줄의 쿼리문을 전송하는 방법
2) 19번 줄의 table과 column의 정보가 제공
3) $sort 가 post_method 방식으로 데이터 전송이 이루어진다.
위 내용을 참조하여 $sort 부분의 데이터에 sql 구문을 삽입해야한다. 위 문제에서 제공된것 처럼 order by 의 특징을 이용해야한다.
order by 의 경우 서브쿼리를 제공할 수 있으며 이때 if 조건문을 사용하면 blind sql injection 을 사용할 수 있다.
공격 가능성을 테스트 하기 위해 if(1=1, sleep(10),2) 를 통해ys 확인하였고, 10초뒤에 결과가 출력 됨으로 공격의 가능성을 확인하였다.
, if(length((select authkey from authkey limit 0,1))=’values’,cot(0),0)
해당 구문을 통해 flag의 길이값을 확인했다, 이때 사용된 cot(0)은 무한대임으로 오류를 유발한다, 결과 40자릿수를 가지고 있음을 확인했다.
, if(ord(substr((select authkey from authkey limit 0,1),'+value1+',1))='+value2+',cot(0),0)
를 통해 한글자씩 flag 값을 받아와 리스트화 진행하여, 해당 리스트를 출력하는것으로 플래그를 확인할 수 있었다.
이를 제출시 해당 단계도 통과할 수 있다.
'Hacking > wargame.kr' 카테고리의 다른 글
[wargame.kr] Question 19. QnA (0) | 2021.07.19 |
---|---|
[wargame.kr] Question 18. dmbs 355 (1) | 2021.07.19 |
[wargame.kr] Question 16. ip log table (0) | 2021.07.19 |
[wargame.kr] Question 15. Simple Board (0) | 2021.07.19 |
[wargame.kr] Question 14. pyc decompile (0) | 2021.07.19 |