Wargame/Webhacking.kr

Webhacking.kr old 39번 문제 풀이

esyeonge 2021. 4. 10. 15:22

39번을 클릭하면 위와 같은 화면이 뜬다. view-source를 클릭하여 소스 코드를 보자.

 

SQL 문법이 있는 것으로 보아, SQL Injection 문제 같다.

 

입력창으로 받아온 id 값에 \\가 있으면 삭제하고, '는 ''로 치환한다.

그 다음 id 값의 0부터 15번째 자리 값까지 복사하여 저장한다.

 

SQL문을 보면

select 1 from member where length(id)<14 and id='{$_POST['id']}

로 마지막 싱글쿼터가 빠져있다.

싱글쿼터가 빠진 상태에서는 문장이 완성 되지 않기 때문에 싱글 쿼터를 넣어주어야 한다.

그런데 위에서 ' 를 ''로 치환한다.

이때 우리가 참고할 수 있는 것은 15번째 자리까지만 복사한다는 것이다.

만약 우리가 값을 입력할 때 값의 15번째 자리에 '를 넣으면

''로 치환되어도 두번째 싱글쿼터는 16번째 자리이기 때문에 복사되지 않을 것이다.

 

즉,

1(문제 해결을 위한 값) + 공백(13) + '

를 form 입력창에 입력하면

최종적으로 result[0]이 1이 되기 때문에 문제가 풀리게 된다.