문제 URL로 접속한다.
if(preg_match('/[a-zA-Z0-9]/i', $id) || preg_match('/[a-zA-Z0-9]/i', $pw)) exit("빼애애ㅐ애애ㅐㅐ액!!!!");
사용자가 입력한 id와 pw에서 알파벳 소문자, 대문자, 숫자가 있으면 exit한다.
if(preg_match('/\||&| |0x|\t|admin|-|\'/i', $id) || preg_match('/\||&| |0x|\t|admin|-|\'/i', $pw)) exit("빼애애ㅐ애애ㅐㅐ액!!!!");
사용자가 입력한 id와 pw에서 &, 0x, \t, admin 등의 특수문자가 있으면 exit한다.
$result = mysqli_fetch_array(mysqli_query($conn,$query));
if($result){
echo $flag;
exit;
}
쿼리문을 실행하고 그 결과값이 존재하면 flag를 출력하고 있다.
이 문제는 False SQL Injection을 통해 해결할 수 있다.
id로 \를 전송하여 'and pw='로 만든 다음 이 값을 ""와 비교한다. 이 경우 mysql의 type juggling으로 인해 참으로 처리되어 값을 검색해온다.
Written by choi_jiung
'CTF 중점 스터디' 카테고리의 다른 글
protostar_heap0 Write_up (0) | 2019.12.01 |
---|---|
Wargame.kr_tmitter_Write up (0) | 2019.12.01 |
ctf-d_브리타니아의 원더랜드 Write_up (2) | 2019.11.26 |
Pwnable.kr CMD1문제_정세인 (0) | 2019.11.24 |
ctflearn PIN Write Up (0) | 2019.11.24 |