WEB/webhacking.kr (old)

webhacking.kr 18번

hongjw 2020. 1. 27. 18:54

level 18 첫화면

SQL인젝션 문제인가보다..,  '͡•_'͡• 

php 코드

preg_match($pattern, $str, $match) : str에서 pattern을 검색하고, pattern이 존재하면 TRUE값을 반환해주고 그렇지 않으면 FALSE값을 반환해주는 함수 (pattern은 정규식 패턴)

 

 

1을 입력했더니, hi guest 출력

no=1이면 guest !

 

no=2면, admin으로 문제 해결 !

이 때, $_GET[no]에 공백, /, (, ), |, &, select, from, 0x를 입력하면 no hack이 출력된다.

=> 공백, /, (, ), |, &, select, from, 0x를 입력하지 않고, no를 2로 만들어야 한다.

 

select id from chall18 where id='guest' and no=$_GET[no]

id='guest'이면, no=1일 때만 TRUE가 되어서 "hi guest"를 출력한다.

우리는 'admin'값을 제출하여 "hi admin"을 출력해야 한다.

그러나 id값은 우리가 바꿀 수 없기 때문에, no=2가 TRUE가 되도록 만들어줘야 한다.

 

입력칸에 3 or no=2를 입력하면,

select id from chall18 where id='guest' and no=3 or no=2

(id='guest' and no=3) or no=2 -> FALSE or TRUE -> TRUE

그치만 입력값에 공백이 포함되어 있어서 "no hack"이 출력된다.

 

공백을 우회하기 위해 공백 대신 %09를 입력했더니 문제 해결 ~!

(%09는 탭을 url 인코딩한 값)

url

 

'WEB > webhacking.kr (old)' 카테고리의 다른 글

webhacking.kr 19번  (0) 2020.01.29
webhacking.kr 15번  (0) 2020.01.27
webhacking.kr 17번  (0) 2020.01.27
webhacking.kr 16번  (0) 2020.01.27
webhacking.kr 14번  (0) 2020.01.27