본문 바로가기
Wargame/webhacking.kr

webhacking.kr 59번

by morae23 2019. 1. 29.

문제를 보면다음과 같은 input 창들을 볼 수 있다.

 





 

 

JOIN에 test와 010을 입력하여 submit하였다.

 




 

그 뒤 test와 010으로 로그인하면,

아래와 같이 id에 test, lv에 guest가 입력된 것을 볼 수 있다.

 

 




코드를 보면 로그인 시, lv가 admin인 경우에 clear할 수 있다.

 

 



 


lv가 입력되는 join 시점의 코드를 보면 phone 항목의 길이가 20 이상이거나 id에 admin이 입력된 경우, phone에 admin을 포함한 여러 문자열이 입력된 경우 등을 필터링하는 것을 알게 된다.

 

그 뒤

insert into c59 values(‘$_POST[id]’, $_POST[phone], ‘guest’)”);

라는 쿼리를 수행하는 것을 볼 수 있다.

위의 결과를 보면 이 때 guest가 lv에 입력된 것임을 알 수 있다.

따라서 phone input 창을 통해 lv에 admin을 입력하면 된다.

 

하지만 admin이라는 문자열은 필터링 되기 때문에

reverse()를 이용하고자 한다.

 

id에 admin의 reverse()인 nimda를 입력한뒤,

phone에서 reverse(id)를 하면 결과적으로 admin이 입력된다.

 

따라서 입력해야할 값은

id는 nimda,

phone은 0, reverse(id)) --

이다. 이 때 0은 $_POST[phone]에 해당하는 값으로 뒤의 문자열을 합하여 20자 미만이라면 다른 수를 입력해도 된다.

 





 

이렇게 join한 뒤, 로그인하면 clear할 수 있다.

 

 




 

 



 

 



'Wargame > webhacking.kr' 카테고리의 다른 글

webhacking.kr 36번  (0) 2019.01.29
webhacking.kr 61번  (0) 2019.01.29
webhacking.kr 42번  (0) 2019.01.29
webhacking.kr 20번  (0) 2019.01.29
webhacking.kr 1번  (0) 2019.01.29

댓글