starting point
webhacking.kr 27번 본문
초기화면은 입력창과 제출 버튼이 있고, 대놓고 SQL Injection임을 보여준다. 그럼 바로 소스코드를 살펴보겠다.
[사진2]를 살펴보면 no라는 이름으로 text값이 GET방식으로 전달되는 것을 확인할 수 있다.
[사진3]을 살펴보면 preg_match를 통해서 특정 문자를 필터링한다. #, select, (, 공백, limit, =, 0x를 대소문자 구분 없이 필터링한다. 문제를 해결하기 위해서는 쿼리문의 결과로 나온 id값이 'admin'이면 해결된다. 수월한 문제 해결을 위해서 admin의 no값이 2라는 것을 알려준다. 그럼 위의 쿼리문을 통해 원하는 결과를 얻어내기 위해 쿼리문을 조작해보겠다.
[사진4]를 통해서 guest값이 있는 레코드의 no=1 임을 알 수 있다.
위에서 알아낸 정보를 바탕으로 각종 쿼리문을 테스트하기 위한 테이블을 생성했다.
쿼리문의 결과값으로 admin을 가져오기 위해서 다음과 같은 쿼리문을 사용했다.
select id from game where id='guest' and no=(2) or no like 2;
where 조건문의 실행 순서는 (id='guest' and no=(2)) or no like 2로 앞에 and연산자가 먼저 처리된다. 이는 일반적인 연산자 우선순위에 따른 결과이다. 우선 위 쿼리문을 생성한 테이블에 적용해보겠다.
성공적으로 admin값을 가져온 것을 확인할 수 있다. 그럼 문제를 해결하기 위해 문제에 맞게 쿼리문을 바꿔보겠다.
select id from chall27 where id='guest' and no=(2) or no like 2;#);
빨간색으로 표시된 부분이 입력값이 될것이다. 그럼 이 쿼리문이 제대로 admin값을 가져오는지도 확인해보겠다.
위와 같이 성공적으로 admin값을 가져 왔다.(테스트하기 위해 테이블 이름이 다른 것은 유의하고 보길 바란다.)
하지만 문제에서는 공백, #이 필터링되기 때문에 이를 우회하기 위해 값을 수정해보겠다.
2)%09or%09no%09like%092;%00
%09를 통해서 공백을 우회하고 주석을 우회 하기 위해 %00을 사용했다. 이를 문제에 입력해보겠다.
성공적으로 문제를 해결하였다.
https://dorahee.tistory.com/140
sql 인젝션 우회 기법
1. or and 구문을 필터링 하고 있을 경우 - url 인코딩 문자인 %로 우회 - and >> %26%26, && - or >> %7C%7C, || 2. 단순 문자열 필터링인 경우 - preg_match - php 필터링 함수인 preg_match를 사용할 때 char,..
dorahee.tistory.com
공백을 우회하는 방법 : %0a, %0b, %0c, %0d, %a0, %09, +, /**/
위 링크를 통해서 우회방법을 확인할 수 있다.
https://www.w3schools.com/tags/ref_urlencode.ASP
HTML URL Encoding Reference
HTML URL Encoding Reference URL encoding converts characters into a format that can be transmitted over the Internet. URL - Uniform Resource Locator Web browsers request pages from web servers by using a URL. The URL is the address of a web page, like: htt
www.w3schools.com
위에서 사용된 우회방법들에 사용된 URL 인코딩된 문자가 어떤 것인지 확인할 수 있다.
https://coderstoolbox.net/string/#!encoding=xml&action=encode&charset=us_ascii
Online XML entity encoder | Coder’s Toolbox
String conversion JavaScript disabled! This page does not work without JavaScript.
coderstoolbox.net
실제로 위 인코딩 된 문자를 테스트해 볼 수 있는 사이트이다.
그저 어떤 문자가 우회되는지를 외우기보다는 위 링크를 통해서 직접 써보고 각 문자가 어떤 식으로 동작하는지 눈으로 확인해 보는 것이 더욱 이해가 잘 될 것이다.
'WarGame_WriteUp > Webhacking.kr' 카테고리의 다른 글
webhacking.kr 39번 (0) | 2020.02.19 |
---|