sql injection bypass WAF

2024. 5. 26. 15:12웹 해킹/Dreamhack Wargame

SQL Injection 문제. WAF이 붙은 걸로 보아 웹방화벽에서 필터링을 거는 듯하다

 

Code

# init.sql

init.sql파일에서 flag가 admin의 upw임을 알 수 있다.

 

# app.py

union, select, from, and, or, admin, space, *, / 에 대해 필터링을 하고 있다.

lower()함수를 사용하지 않았으므로 대문자를 활용하면 우회할 수 있다.

space는 tab을 활용하면 우회할 수 있다.

 

Happy Path

uid에 값을 입력할 수 있다.

 

upw값을 구하기 위해서는 해당 sql문으로 구할 수 없으니

UNION으로 upw 속성 테이블을 붙여야겠다.

 

admin의 upw값을 구하려면 다음과 같이 sql문을 작성하였다.

SELECT * FROM user WHERE uid=’’ UNION SELECT upw FROM user WHERE uid=’ADMIN’

 

따라서 uid = ’ UNION SELECT upw FROM user WHERE uid=’ADMIN

space ⇒ tab으로 우회하면

uid = ' UNION SELECT upw FROM user where uid='ADMIN

하지만 해당 값을 입력해도 flag값이 출력되지 않는다.

 

UNION은 column 갯수가 동일해야 가능하기 때문에

뒤의 테이블도 같은 column수를 맞춰줘야한다.

 

따라서

uid = ' UNION SELECT null,upw,null FROM user where uid='ADMIN

 

FLAG

'웹 해킹 > Dreamhack Wargame' 카테고리의 다른 글

blind sql injection advanced  (0) 2024.05.26
sql injection bypass WAF Advanced  (0) 2024.05.26
simple_sqli_chatgpt  (0) 2024.05.26
XSS Filtering Bypass Advanced  (0) 2024.05.25
XSS Filtering Bypass  (0) 2024.05.25