반응형
LOS 3번째 문제 goblin
코드를 보니
get으로 no 값을 받는데
해당 쿼리를 조회했을 때 결과에서 id가 admin인 row가 있어야한다.
근데 여기서 preg_match를 보면 '와 " 등 필터링이 걸려있다.
우선 당황하지 않고 자세히 생각해본다.
우선 no를 int형으로 입력하면 뒤에 '를 붙이지 않고 or을 쓸수 있다.
그 후 당연히 로직은 or id='admin' 이라고 생각하지만
' 가 필터링이 걸려있다.
참고로 url encoding 해도 안된다.
그렇다면 string값을 우회하면된다.
DB마다 다르지만 현재의 코드는 mysql를 사용한다.
MySQL에서는 Hexadecimal Literals 이란게 존재한다.
https://www.geeksforgeeks.org/mysql-hexadecimal-literals/
한마디로 16진수인 hex값으로 데이터를 이해할수 있다.
그렇다면 우리는 admin을 16진수로 변경하면된다.
한마디로 int형을 써서 ' 이거나 " 이거를 안써도 되게끔 하는 것이다.
python으로 바로 admin의 hex 값을 알아낸다.
0x61646d696e 이다.
그렇다면 다음과 같이 poc를 작성할 수 있다.
?no=123 or id = 0x61646d696e
반응형
'Security > WebHacking' 카테고리의 다른 글
[Load of SQLinjection][LOS] 문제풀이 wolfman (0) | 2021.08.12 |
---|---|
[Load of SQLinjection][LOS] 문제풀이 orc (0) | 2021.08.12 |
[Load of SQLinjection][LOS] 문제풀이 cobolt (0) | 2021.08.12 |
[Load of SQLinjection][LOS] 문제풀이 gremlin (0) | 2021.08.12 |
webhacking.kr Level 1 (0) | 2021.08.10 |