preg_match함수에서 and나 or을 쓰는것을 막고 있다.
쿼리를 보면 id랑 패스워드에 해당하는 것을 가져온다.
이문제를 해결하려면 데이터베이스에 admin이라는 아이디를 가져와야지 풀리는 문제임을 알 수 있다.
일단 or랑 and가 필터링 되어 있으니까 or 대신 ||을 쓰고 and 대신 &&모양을 사용하면 된다.
여기서 and문자는 url에서 처리되기 때문에 url인코딩을 해서 %식으로 입력을 해줘야 된다.
where문을 거짓 처리하고 admin을 새로 적어주려고 pw에 0이나 빈칸 등의 값을 넣어주면 where문이 거짓 처리가 된다.
그리고 admin이 나오도록 쿼리를 바꿔주는데
select id from prob darkelf where id='guest' and pw='0' or id ='admin'하면 해결할 수 있다.
이때 or와 and는 우회해서 적어주면 해결할 수 있다.
마지막에 #을 붙이는데 #도 url인코딩해서 사용한다. 이유는 pw검증을 무시하는 공격 방법으로 pw검증부분을 주석처리 해서 보내는 방법으로 문제를 해결할 수 있다.
?pw=0'||id='admin'%23
'보안 > 웹해킹' 카테고리의 다른 글
[lord of SQLinjection] troll 문제풀이 (0) | 2021.08.04 |
---|---|
[lord of SQLinjection] orge 문제풀이 (0) | 2021.08.04 |
[lord of SQLinjection] wolfman 문제풀이 (0) | 2021.08.04 |
[lord of SQLinjection] orc 문제풀이 (0) | 2021.07.30 |
[lord of SQLinjection] goblin 문제풀이 (0) | 2021.07.30 |