본문 바로가기
ctf/Web Exploitation

Web Gauntlet 문제 풀어보기

by 반짱코 2025. 6. 24.
728x90

문제

 

SQL 인젝션을 사용해서 해결하는 문제였다.

 

 


 

 

 

Round 1

 

첫 문제
첫 필터

 

한 번의 해결로 끝나는 문제가 아니라 총 5라운드를 해결해야 플래그를 얻을 수 있다.

or은 필터링되어 사용할 수 없었다.

 

 

아래 사이트에서 많은 도움을 받았다.

https://www.invicti.com/blog/web-security/sql-injection-cheat-sheet/#LineComments

 

SQL Injection Cheat Sheet

The Invicti SQL Injection Cheat Sheet is the definitive resource for payloads and technical details about exploiting many different variants of SQLi vulnerabilities.

www.invicti.com

 

가장 간단한 방법은 주석을 사용해 무시하는 방법이다.

 

ex) admin'--

이렇게 하면 따옴표 뒤의 패스워드 구문은 무시된다.

 

 

 

 

 

 

Round2

 

두 번째 문제
두 번째 필터

OR 뿐만 아니라 -- 주석까지 사용할 수 없다.

하지만 주석에는 -- 만 있는 게 아니라 /**/도 있다.

 

ex) admin'/*

이 방법도 주석 뒤의 구문은 무시된다.

 

 

 

 

 

 

Round3

 

세 번째 문제
세 번째 필터

조건문을 사용할 수 없게 필터링된 거 같다.

위 사이트에서 알려준 스태킹을 사용했다.

 

ex) admin';

세미콜론을 사용하면 바로 쿼리가 끝나기 때문에 패스워드를 무시할 수 있다.

 

 

 

 

 

 

Round4

 

네 번째 문제
네 번째 필터

 

admin을 사용하지 않고 로그인을 해야 된다.

UNION을 사용해 새 쿼리를 하나 더 실행하는 방법이다. 

 

admin을 사용하지 않고 아무 사용자를 검색한다 그리고 UNION 뒤의 쿼리는 테이블 1번 항목을 검색해 반환한다.

admin은 최고권한이기 때문에 첫 번째 테이블에 있지 않을까

 

ex) john' UNION SELECT * FROM users LIMIT 1;

john은 아무거나 작성해도 된다. 그리고 공백문자열을 피해야 하기 때문에 띄어쓰기된 부분을 /**/ 주석으로 바꿔준다.

 

 

 

 

 

 

Round5

 

다섯 번째 문제
다섯 번째 필터

union도 필터에 막혔다. 위 사이트에 따옴표를 사용하지 않고 문자열을 연결하는 방법이 있다.

https://www.invicti.com/blog/web-security/sql-injection-cheat-sheet/#LineComments

 

ex) a'||'dmin';

||이 SQL에서는 결합 연산자로 사용되어 admin을 사용한 것과 같은 효과를 준다.

sqlite를 사용한다고 알려줬기 때문에 +는 사용불가!

 

 


 

 

 

 

결과

결과1
플래그

 

필터를 알려주던 창에서 플래그를 얻을 수 있었다.

 

 

결과2

 

성공!!

728x90

'ctf > Web Exploitation' 카테고리의 다른 글

Who are you? 문제 풀어보기  (0) 2025.05.01
More Cookies 문제 풀어보기  (0) 2025.04.15
Some Assembly Required 1 문제 풀어보기  (1) 2025.02.04
login 문제 풀어보기  (1) 2025.01.31
It is my Birthday 문제 풀어보기  (0) 2025.01.25

댓글