본문 바로가기
Hacking/WebHacking.kr

Webhacking.kr : old-07 (300 pt)

by newbie22 2021. 2. 11.

 

문제에 접속하면 다음과 같은 화면이 나타났습니다.

 

< 문제 화면 >

-> val이라는 파라미터가 붙어서 접속됩니다.

-> source가 주어집니다.

 

우선 source부터 확인하였습니다.

< source >

-> go에 val의 값을 저장합니다. (val의 초기 값이 1이므로 go 값은 1이 되겠습니다.)

-> go 값에 다음과 같은 문자열이 필터링됩니다.

2 , - , + , from , _ , = , \s(정규표현식 공백 문자를 의미합니다.) , * , /  값을 필터링합니다.

-> go 값을 가지고 쿼리를 실행합니다. 실행 결과가 없으면 query error 문자열이 출력하고 lv값이 2이면 문제를 해결할 수 있습니다.

 

우선 2가 필터링되어 있고 헥스 값을 사용하려고 했는데 0x32 (헥스 값에도 2가 포함되어 있었습니다.)

 

(, )는 필터링 되어 있지 않으므로 mod함수(나머지를 구하는 함수)를 사용하여 2를 만들기로 하였습니다.

 

< mod(5,3)=2 >

-> lv가 2인 데이터가 테이블에 없는 모양입니다. 따라서 union select를 사용하여 lv가 2인 값을 추가해야 합니다.

 

/ , * , \s에 의하여 mysql 공백 우회하는 기법 중에 ()만 사용할 수 있습니다.

 

payload : ?val=4)union(select(mod(5,3))

위와 같이 작성하고 rand의 값이 1이 나올 때까지 새로고침 하면 됩니다.

 

 

끝~~

 

 

'Hacking > WebHacking.kr' 카테고리의 다른 글

Webhacking.kr : old-46 (300 pt)  (0) 2021.02.12
Webhacking.kr : old-11 (300 pt)  (0) 2021.02.11
Webhacking.kr : old-05 (300 pt)  (0) 2021.02.10
Webhacking.kr : old-58 (150 pt)  (0) 2021.02.09
Webhacking.kr : old-56 (250 pt)  (0) 2021.02.09