네 안녕하세요. Godhaword 입니다.
바로 문제 보시죠
일단 2번 문제에서 문제 풀기 전에 잘 읽으라고는 했는데 저도 잘 안읽는 편이긴 합니다.
$query = "select id from prob_goblin where id='guest' and no={$_GET[no]}";
3번부터 Query 문을 제대로 이해하고 있는지에 대해 물어보는 문제가 나오기 시작합니다.
- or은 더하기(+) 이고 and 는 곱하기(*) 로 알아두시면 편합니다.
- 참은 1, 거짓은 0으로 생각하시면 편합니다.
- 저희가 쿼리를 입력하기 전 부분은 최대한 거짓의 형태로 0을 만들어두면 편합니다.
no에다가 그냥 ' or 1=1#을 입력하면 어떻게 되나 일단 봅시다.
' (싱글쿼터) 가 필터링이 되어 No Quotes 라는 창이 뜨는 것을 확인 할 수 있습니다.
그러면 싱글쿼터를 안쓰고 넘어가면 되는데요.
no 부분에 guest의 no 값인 1과 다른 수를 입력해주고 그 뒷부분을 우회해서 적은 admin 값으로 넘겨줍시다.
저는 id를 hex값으로 바꾸어 넘겨주겠습니다.
admin을 hex로 encoding하면 61646d696e라는 값이 나옵니다(다른 CTF에서도 많이 나올 수도 있으니 이 값은 어디다가 저장해두세요)
위처럼 날리면 논리 연산에 의하여
id='guest' and no=2 or id=0x61646d696e
앞부분이 같이 사라지고 뒤에 id='admin' 이라는 값만 남게 됩니다.
이 외에도 chr값으로 넘긴다거나 하는 등의 여러가지 방법이 있습니다.
- 이번문제로 알 수 있는 것
- 문자형의 "admin" 말고도 인코딩하여 다른 꼴로 필터링을 우회할 수 있다.
- or 과 and 는 생각하기 쉽게 더하기 곱하기로 생각하자 - Key Point
admin=hex(0x61646d696e)
admin=ascii(97 100 109 105 110)
3번부터는 아애 초심자라고 보기보단 어느정도 이해한 초심자라고 보는게 좋을 것 같네요
https://godhaword.tistory.com/472
https://godhaword.tistory.com/473
'web_security > Lord Of SQL' 카테고리의 다른 글
[LOS : Lord Of SQL Injection] 6번 Darkelf 문제 풀이 (0) | 2022.06.04 |
---|---|
[LOS : Lord Of SQL Injection] 5번 Wolfman 문제 풀이 (0) | 2022.06.04 |
[LOS : Lord Of SQL Injection] 4번 Orc 문제 풀이 (0) | 2022.06.04 |
[LOS : Lord Of SQL Injection] 2번 Cobolt 문제 풀이 (0) | 2022.06.04 |
[LOS : Lord Of SQL Injection] 1번 Gremlin 문제 풀이 (0) | 2022.06.04 |