이번 문제는 방화벽을 우회하는 문제이다.

기본적인 필터링은 admin 문자열만 필터링하고 있다. 어쨌든 전달되는 파라미터 id값만 방화벽에서 필터링되지 않고 넘어가면 된다.

payload: ?id=1234' or 1=1 #

가장 기본적인 sql injection payload를 넣어주면 forbidden 으로 WAF에서 걸린다.

 

이번에 방화벽을 우회하는 payload에 대해 배웠다.
- { a 1 } (true)
- <@ = 1 (false)

 

먼저 {a , 1} 구문에 대해 이해해보자.

select {a, 1} =1 일 때 참을 반환하고 1이 아닌 값이 들어오면 거짓을 반환한다.

select {a, (select 1)} = 1 도 같은 원리로 동작

 

그다음으로 <@= 1  구문은 다음과 같다.

id = 1 <@=1 이 오면 아예 구문 오류는 발생하지 않지만 거짓을 반환한다.

그래서 두 구문을 or 로 조합하면 참이 된다.

 

 

 

성공..

 

참고 

https://github.com/SpiderLabs/owasp-modsecurity-crs/issues/1181

 

'WEB > Lord of SQLinjection' 카테고리의 다른 글

[LOS] step35. cyclops 풀이  (0) 2023.10.18
[LOS] step34. godzilla 풀이  (0) 2023.10.17
[LOS] step32. alien풀이  (0) 2023.08.30
[LOS] step31. ZOMBIE 풀이  (0) 2023.07.11
[LOS] step30. ouroboros 풀이  (0) 2023.07.05

+ Recent posts