해킹/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
이렇게 된다. (여기서 -- 뒤에 공백이 있어야 주석처리가 되니 주의해야 한다!) 문제
해결!
반응형