Wargame.kr

Web_700

lonely guys



웹 700점짜리 lonely guys 문제입니다.

Order by SQL Injection에 관련 된 문제라고 하네요.

문제를 확인 해 봅시다.



문제에 접속 해 보니 위와 같은 웹페이지가 나타났습니다.

reg_single(sort)라고 적혀있는 볼드체를 클릭하면 asc 기준에서 desc 기준으로 재정렬이 됩니다.

별다른 힌트는 없는 것 같습니다. 소스를 확인 해 보도록 하죠.



여기서 주의깊게 볼 부분은 update 구문입니다.

flag가 들어있는 column과 table명을 적나라하게 적어주셨습니다. 우리는 이를 이용해 문제를 쉽게 풀어나갈 수 있을 것 같습니다.

그리고 아래의 select문을 확인하면 reg_date 기준으로 오름/내림차순 정렬을 하는 쿼리문을 볼 수 있습니다.

하지만 sort 변수에는 single quotation이 없기 때문에 이를 공격벡터로 이용하여 SQLi를 때릴 수 있을 것 같습니다.

명칭은 Order By Clause SQLi라고 하는 듯 합니다. 

처음에는 IF문을 이용하여 결과 값 차이를 확인 해 보려고 노력해보았으나, order by 절에서는 IF문이 먹히질 않는 것 같습니다..

따라서 Time Based Blind SQLi로 풀이하였습니다.



위와 같이 sort 파라미터를 POST로 요청하는데, select문에 sleep을 먹여 key값의 글자수를 확인하였습니다.

뭔가.. 다른 방법으로도 글자수를 확인 할 수 있을 것 같은데, 떠오르지 않아 0xf5( _ )를 하나씩 늘려가며 노가다로 찾아냈습니다.

Key값의 글자 수는 40Byte입니다.



40byte인 것을 알아냈으니, python 스크립트를 작성하여 40글자를 알아냈습니다.

Time Based이기 때문에 요청하기 이전과 이후의 시간 차를 계산하여 Key를 찾아내는 스크립트입니다.

다른 좋은 방법을 알고 계시는 분은 댓글로 부탁드립니다..(굽신)



짠!


'Wargame > Wargame.kr' 카테고리의 다른 글

[Wargame.kr] Web_700_php? c?  (0) 2016.05.27
[Wargame.kr] Web_700_ip log table  (0) 2016.05.27
[Wargame.kr] Web_700_dmbs335  (0) 2016.05.26
[Wargame.kr] Web_650_crack crack crack it  (0) 2016.05.25
[Wargame.kr] Forensics_650_img recovery  (0) 2016.05.24

+ Recent posts