query : {$query}
"; $result = @mysql_fetch_array(mysql_query($query)); if($result['id']) solve("gremlin"); highlight_file(__FILE__); ?>
preg_match("pattern","subject")
pattern에 주어진 정규표현식을 subject에서 찾는다.
PHP의 정규표현식은 구분자로 시작해서 구분자로 끝을 내야 한다.
구분자는 보통 /를 사용한다.
구분자 뒤에는 옵션이 위치할 수 있다.
ex) 옵션 i : 대소문자를 구분하지 않는다.
|는 OR 연산자 기능을 한다.
id: prob or _ or . or () with no 대소문자 구분
pw: prob or _ or . or () with no 대소문자 구분
select id from prob_gremlin where id='{}' and pw='{}'
$result['id']가 참이면 된다.
즉, 로그인만 성공하면 된다!
아주 간단한 sql 인젝션이라고 볼 수 있다.
' or 1=1--%20
where id='' or 1=1 --
--(공백) 이 주석인데 그냥 넣으면 안 먹으니까 %20으로 넣어준다.