본문 바로가기
개인 공부/WEB

[웹해킹] LOS 14 - (Giant)

by 아메리카노와떡볶이 2021. 6. 19.
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과 /**/을 테스트 해보았으나 실패했다.

따라서 쿼리문에 영향을 끼치지 않는 다른 문자가 뭐가 있을까 싶어서 아스키코드를 살펴보았다.

평소 잘 살펴보지 않던 문자들이었는데, 축약어로 되어있어서 기능이 궁금해서 검색해보았다.

출처:https://blog.naver.com/mtjeaids/70053523593

필터링 된 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

댓글