본문 바로가기

웹 해킹 (Web)/webhacking.kr

[webhacking.kr] 웹해킹.kr old-18번 (100)

728x90
반응형

이번에는 webhacking.kr의 old-18번 문제입니다. 데이터베이스를 이용하는 문제고, 100점이 배점되어 있습니다.

 

old-18번 문제에 들어가면 위와 같은 화면이 나옵니다. SQL Injection을 사용하는 문제인 것 같습니다.

 

소스 코드를 보겠습니다.

 

소스 코드를 해석해보면, 우선 GET방식으로 no를 전달받습니다. 이 때 정규 표현식으로 공백, &, select, from 같은 문자열이 필터링되는 것 같습니다.

 

밑에넌 sql 쿼리문이 나오고, if 조건문에서 id가 admin으로 로그인하면 문제가 해결되는 것 같습니다.

 

그리고 주석으로 admin의 no가 2라고 힌트를 주고 있습니다. 

 

SQL 쿼리문에서 id='guest'는 고정되어 있으므로, 쿼리문을 바꿔보겠습니다.

 

SELECT id FROM chall18 WHERE id='guest' and no='-1' or no='2' 로 바꾸어 보겠습니다.

 

위와 같이 바꾸면 앞의 and문은 false가 되고, 뒤의 or문으로 인해 true가 되기 때문에 식이 성립합니다.

 

하지만 띄어쓰기로 인해 공백이 필터링되므로 no hack이라는 result가 나오게 됩니다.

 

GET 방식으로 전달하므로 URL에서 탭을 URL encode한 %09로 대체하여 보겠습니다.

 

admin으로 접속이 되며 문제를 해결할 수 있습니다.

 

 

728x90
반응형