※ 작년 말 ~ 올해 초에 작성한 라이트업으로 사이트 개편 전의 문제가 섞여있습니다.  ※ 

 

 

 

소스를 확인하면 preg_match("/#|select|\(| |limit|=|0x/i",$_GET['no']) 함수로 #, select, (, 공백, limit, = 등을 입력하면 “no hack”이라고 뜨게 되는 것을 확인할 수 있다. 또한 no=({$_GET['no']}) 부분을 보면 괄호 안에 값이 들어가는 것을 확인할 수 있다.

 

 

 

 

 

 1을 입력한 후 제출을 눌러보니 guest라고 뜨는 것을 확인할 수 있다.

 

 

 반면에 2를 입력해보니 query error라고 뜬다. 소스를 보면 admin’s no=2라고 나오기 때문에 2라는 값을 넘겨주어야 한다. 따라서 쿼리문이 ‘no=(0) or no=2’가 되어야 한다.

 

 

 

 이때 쿼리문의 ‘)’ 괄호를 무시해야 하기 때문에 주석을 붙여서 ‘no=(0) or no=2 -- ‘라고 입력이 되어야 한다. 하지만 preg_match로 인해서 공백과 = 기호가 입력될 경우 ‘no hack’이 출력되기 때문에 우회를 해야 한다. 공백은 %09, = 기호는 like로 변환을 해준다. , 최종 입력 값은 ‘0)%09or%09no%09like%092%09--%09’가 된다.

 

 

728x90

'CTF > 웹 해킹' 카테고리의 다른 글

webhacking.kr challenge 34  (0) 2020.06.27
webhacking.kr challenge 32  (0) 2020.06.27
webhacking.kr challenge 26  (0) 2020.06.27
webhacking.kr challenge 25  (0) 2020.06.27
webhacking.kr challenge 24  (0) 2020.06.27