해킹/Web hacking

webhacking.kr 27번 문제 풀이

공부하는 뚱이 2023. 2. 22. 21:19
반응형

SQL INJECTION이란 말과 함께 입력할 수 있는 칸과 view-source가 있다. 이번

문제는 SQL INJECTION 취약점을 이용하는 문제인 것 같다. 일단

 

소스코드를 보자 밑에

 

GET ['no']에 대한 php를 살펴보면 sql injection 문제답게 sql injection 필터링이 되어 있다. 필터링을 우회하여 문제를 해결해야 하는 것 같다. 일단 아이디가 guest라고 하면 guest가 출력이 된다고 한다. 그리고 아이디가 admin이면 문제가 풀린다. 그리고 주석으로 admin의 no = 2라고 한다. 그럼 

"select id from chall27 where id='guest' and no=({$_GET['no']})" 이 부분을 sql injection 공격을 해야 하는 부분이다. select

 

id from chall27 where id='guest' and no=아무 숫자) or no = 2-- )"))

요렇게 하면 sql injection이 성공하여 admin으로 로그인이 될 것이다.

그럼 필터링되어있는 =이랑 공백을 해결해야 하는데 

= 이거는 like로 사용할 수 있고 공백은

%20이 필터링되어있어서 %09 (tab)을 사용해야겠다. 필터링은

--을 사용하면 그렇다면

한번 필터링 우회를 한 sql구문을 만들어 보면

 

아무숫자)%09or%09no%09like%092--%09 

이렇게 된다. (여기서 -- 뒤에 공백이 있어야 주석처리가 되니 주의해야 한다!) 문제

 

 

해결!

반응형