코드를 보니 이번에는 id가 하드코딩되어있고 우리가 간섭할 수 있는 부분은 no 부분인것 같다.
no에 1이라는 값이 들어가면 guest 사용자를 환영해준다.
하지만 여기에 1이 아닌 다른값이 나온다면 실행결과가 나오지 않는다.
-> 여기서 우리는 잘못된 SQL 구문이라는것을 추측할 수 있게 된다.
얼추 감을 잡았겠지만 OR을 이용하여 잘못 실행된 SQL 구문을 대체할것이다.
no에 2 or id='admin'을 시도하였으나 따옴표가 필터링되어 exit되었다.
여기서 작은 따옴표(')를 억음 부호(`)로 대체해 보기도 하고..
없애보기도 하는등의 여러가지 Testcase로 시도하였으나 실패하였다.
나는 여기서 문득 SQL에서 16진수(Hex)를 문자열(String)으로 인식한다는것이 떠올랐다.
그래도 바로 admin을 16진수로 변환해보았다.
admin -> 61646d696e -> 0x61646d696e
위 과정을 통해 우리는 admin을 16진수로 변환하면 0x61646d696e라는 사실을 알게 되었다.
그렇게 위 값을 id로 전달해주면 admin으로 인식하며 문제가 풀리게 된다.
'보안공부 > Lord of SQLInjection 풀이' 카테고리의 다른 글
Lord of SQLInjection Orc 풀이 (0) | 2024.12.11 |
---|---|
Lord of SQLInjection Wolfman 풀이 (0) | 2024.12.11 |
Lord of SQLInjection Darkelf 풀이 (0) | 2024.12.11 |
Lord of SQLInjection Orge 풀이 (0) | 2024.11.08 |
Lord of SQLInjection Troll 풀이 (1) | 2024.11.08 |