이번 문제는 방화벽을 우회하는 문제이다.
기본적인 필터링은 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 |