-
<Lord of SQL Injection> zombie_assassinWargame/Lord of SQL Injection 2021. 11. 18. 13:39
addslashes() : 싱글 쿼터('), 더블 쿼터("), 백 슬래시(\), NULL 문자 앞에 백 슬래시가 추가된 문자열 반환
strrev() : 문자열 반전
즉, 전달받은 id와 pw에 위와 같은 문자가 있다면 백 슬래시를 추가하고 반전하여 반환한다.
그리고 prob, _, ., ()를 필터링한다.
id 값이 참이면 문제를 해결할 수 있기 때문에
select id from prob_zombie_assassin where id='' and pw=''
빨간 부분을 단순한 문자열로 만들고 맨 뒤의 싱글 쿼터는 주석 처리하면 될 것 같다.
더블 쿼터(")를 입력하면 addslashes()에 의해 \"가 되고
strrev()를 통해 "\를 반환한다. 즉, id에 더블 쿼터를 전달하면
select id from prob_zombie_assassin where id='"\' and pw=''
and 앞의 싱글 쿼터는 \로 인해 단순한 문자가 되고 더블 쿼터 역시 싱글 쿼터 사이에서 단순한 문자가 된다.
이제 id를 참으로 만들고 맨 뒤의 싱글 쿼터를 주석 처리하면 되기에
select id from prob_zombie_assassin where id='"\' and pw=' or 1#'
id='문자열' or 1의 형태로 참이란 값을 가지고 뒤에 #으로 주석 처리를 해주면 된다.
따라서, 문자열이 반전되는 것을 생각하여
?id="&pw=%231 ro 를 입력하면
문제를 해결할 수 있다.
'Wargame > Lord of SQL Injection' 카테고리의 다른 글
<Lord of SQL Injection> xavis (0) 2021.11.20 <Lord of SQL Injection> nightmare (0) 2021.11.19 <Lord of SQL Injection> succubus (0) 2021.11.17 <Lord of SQL Injection> assassin (0) 2021.11.16 <Lord of SQL Injection> giant (0) 2021.11.15