본문 바로가기

웹해킹/webhacking.kr

webhacking.kr old 18번 문제풀이(Writeup) SQL Injection관련 워게임

반응형

webhacking.kr old 18번 문제풀이(Writeup) SQL Injection관련 워게임

old 18번 문제풀이 1

문제를 들어가면 위와 같이 출력된다.  SQL Injection문제이다. 먼저 SQL Injection에 대해 잘 모르거나, 헷갈리는 분들은

아래 글을 통해 공부하고 오길 바란다. 

 

2022.09.06 - [웹해킹/드림핵] - 드림핵 웹해킹 baby - sqlite 워게임 문제 풀이 및 SQL Injection 설명

 

다들 잘 알고 있을거라고 생각하고, 문제를 진행하겠다. 코드부터 확인해보자.

 

 

 

old 18번 문제풀이 2

php 코드를 보니 preg_match를 통해 몇 가지 문자와 문자열을 필터링하고 있다. Bypass 해서 admin으로 접속하면 문제가 끝날 것으로 보인다.

 

여기서 우리가 집중해서 봐야할 부분은 GET 방식 메소드를 선택한다는 것이다. GET 메소드를 사용하면 URL에 ?를 통해 데이터를 전달한다.

 

 

 

old 18번 문제풀이 3

먼저 no=1로 전달하니 "hi guest"가 출력된다. 역시 GET 메소드를 쓰는 문제는 비슷하다. 이제 쿼리에 맞게 작성해보자.

 

select id from chall18 where id='guest' and no= ____

밑줄에 이제 들어갈 내용을 써야 하는데 앞에서 and가 있기 때문에 guest에서 거짓이 나와야 해서 no=0으로 하고 우리가 필요한 admin은 no=2이기 때문에 or no=2가 되어야 한다. 

 

따라서 select id from chall18 where id='guest' and no=0 or no=2

하지만 필터링을 보면 공백도 필터링이 된다. 따라서 공백 필터링을 우회해야 한다. 공백 필터링 문자는 아래에 적었다.

%09   %0a  %0d  /**/  +

 

 

 

old 18번 문제풀이 4

따라서 ?no=0%09or%09no=2로 입력했더니 성공 메시지가 나왔다. SQL Injectuon 문제이지만, 변수 값과 테이블을

알려줘서 쉬운 편에 속했다.

 

728x90