728x90
Lord of sql injection - Giant 풀이 |
los 14번 giant에 대한 풀이 포스팅입니다.
우선 이전 문제까지 계속 비슷한 형태의 문제였는데 문제형식이 새롭게 바뀌었습니다. 천천히 살펴보겠습니다.
문제 접근
if(strlen($_GET[shit])>1) exit("No Hack ~_~"); if(preg_match('/ |\n|\r|\t/i', $_GET[shit])) exit("HeHe"); $query = "select 1234 from{$_GET[shit]}prob_giant where 1"; echo "<hr>query : <strong>{$query}</strong><hr><br>"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if($result[1234]) solve("giant"); highlight_file(__FILE__); |
우선 필터링 조건을 살펴보면, \n \r \t에 필터링이 걸려져있고, shit 입력값이 1을 넘으면 안된다고 한다.
그렇다면 하나의 문자로 입력이 주어져야한다는 것이다.
쿼리문을 살펴보았을때, from 뒤에 있는 prob_giant 앞에 입력이 들어가게 된다. 따라서 shit 값이 쿼리문에
어떠한 영향을 주지 않으면 문제가 해결될 것이라는 생각이 들었다.
그래서 처음 든 생각은 공백을 삽입하는 것이었다.
내가 알고 있는 공백 우회방법인 %20과 /**/을 테스트 해보았으나 실패했다.
따라서 쿼리문에 영향을 끼치지 않는 다른 문자가 뭐가 있을까 싶어서 아스키코드를 살펴보았다.
평소 잘 살펴보지 않던 문자들이었는데, 축약어로 되어있어서 기능이 궁금해서 검색해보았다.
필터링 된 n,r을 제외하고 escape sequence 중에 form feed라는 이름의 제어문자가 더 존재했다.
이것을 가지고 문제를 해결할 수 있었다.
728x90
'개인 공부 > WEB' 카테고리의 다른 글
[웹해킹] LOS 16 - (Succubus) (0) | 2021.06.19 |
---|---|
[웹해킹] LOS 15 - (Assassin) (1) | 2021.06.19 |
[웹해킹] LOS 13 - (Bugbear) (0) | 2021.06.19 |
[웹해킹] LOS 12 - (Darkknight) (0) | 2021.06.19 |
[웹해킹] LOS 11 - (Golem) (0) | 2021.06.19 |
댓글