Webhacking.kr 50번 문제 풀이!
50번 문제 클릭!
아래와 같은 페이지가 나온다
일단 Submit Query를 눌러보았다
level:1 이라는 결과가 나온다
소스보기를 해보았다
별거는 없어보이니
index.phps 페이지를 봐보자
아래 소스를 보면
id 값에 대해 mb_convert_encoding 으로 인코딩하고 있다
전에 풀어본 문제에서 mb_convert_encoding 의 취약점이 있었던것이 기억날 것이당
이 취약점은 php의 매직쿼터 어쩌구를 우회할 수 있게 해준다
그리고 소스코드를 보면 id 값에 대해서만 union을 필터링하고 있다
이제 SQL 쿼리의 결과가 3이 나오도록 하면 50번 문제는 풀리는거 같다
pw 부분을 보면 md5로 해시화 되어진다는 것도 볼 수 있다
이걸 우회하기 위해서는
쿼리문을 자세히 봐야할 듯하다
select lv from members where id='id' and pw=md5('pw')
id 값에 ' (싱글쿼터)는 %aa(mb_convert_encoding 취약점)로 우회gkrh
pw 부분에 md5는 id 부분과 같이 이용하여
주석처리해주었다
id = guest%aa'/*
pw = */ select 3#
이렇게 입력하면 쿼리문은
select lv from members where id='guest%aa' /*and pw=md5('*/union select 3#')
이 된다
하지만 그냥 이대로 입력하면 안 된다
기호는 URL 인코딩을 이용하여 아래와 같이 우회하였다
50번 문제 클리어!
어려웠당 ㅠ.ㅠ