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번 문제 클리어!


어려웠당 ㅠ.ㅠ