와.... 12월 31일이다.......
우선 3번문제는,
이런식으로 나와있다.
대충 풀이는 id, no를 비교할때, 이를 거짓으로 만들어야 하며 뒷부분에다가 id='admin'을 해줘야한다는것이다.
하지만 문제가있다.
if(preg_match('/\'|\"|\`/i', $_GET[no])) exit("No Quotes ~_~");
바로 ( ', ")를 필터링한다는 것이다. (싱글쿼터, 더블쿼터)
그래서 쿼터로 감싸줘야하는 문자열입력은 힘든상황이다.
우선, guest의 no값을 알아보기위해 약간의 테스트를 해보았다.
우선 no값이 1일때만 Hello guest가 출력되는것을 보아 guest의 no값은 1이라는것을 알 수 있다. 따라서
no=1 이 아닌 no=0등을 통해 이 조건문을 거짓으로 만들어야 한다.
?no=0 or id= 여기까지 만들어주면 된다. 이때 admin이라는 것은 문자열이기때문에, 16진수로 변환시켜주면
쿼터로 감싸줄 필요가 없게된다.
바로, admin은 16진수(hex)값으로 61646D696E 이다.
하지만 ?no=0 or id=61646D696E 이렇게 해주면 php에서는 hex라고 인식을 못한다. hex라는것을
알려주기 위해 0x61646D696E 로 해주면 된다.
따라서 파라미터를 ?no=0 or id=0x61646D696E 이렇게 작성해주면 된다.
요렇게 풀리는것을 확인 할 수 있다.
'워게임 > Lord Of Sql Injection' 카테고리의 다른 글
Lord Of Sql Injection wolfman 5번문제 (0) | 2017.01.05 |
---|---|
Lord Of Sql Injection orc 4번문제 (0) | 2017.01.05 |
Lord of Sql Injection cobolt 2번문제 (0) | 2016.12.28 |
Lord Of Sql Injection gremlin 1번문제 (0) | 2016.11.17 |
Lord Of Sql Injection 소개 (1) | 2016.11.17 |