크툴루다. 크툴루 신화를 모르는 사람은 어떡하라고.... 러브크래프트의 코즈믹 호러 신화에 나오는 가상의 존재이다. 위엄과는 다르게 이번 문제에서는 비겁하게 출몰한다. 코드를 확인해보자
코드
아이구... 영어 잘 못하는데, 위에 영어가 많다. 한번 읽어보면 Paranoia level 1의 ModSecurity Core Rule Set v3.1.0으로 WAF(Web Application Firewall)이 보호한다고 되어있다.(비겁하다! 크툴루! 방화벽 뒤에 숨어서!)
링크를 눌러보면 OWASP Mod Security홈페이지가 나온다.
해결방법
Answer Url : modsec.rubiya.kr/chall/XXXX.php?id=-1'<@=1 OR {a 1}=1 OR '
다행이도 우리의 친구 Github에 이를 ModSecurity PL1(Paranoia Level 1)을 bypass 할 수 있는 방법이 있다.
github.com/SpiderLabs/owasp-modsecurity-crs/issues/1167
위 게시글에 따르면 {'a',b}형태로 bypass가 가능하다고 이야기한다. 'a'에는 if나 version 같은 함수가 들어가고, b에는 비교 식이 들어간다고 적혀있다.
으흠; 우리 상황과는 맞지 않는거 같다. table 도 명시적으로 추가되야하고, 사용할 수 있는 함수가 제한적으로 느껴진다.
위 글의 추가적인 내용을 덧붙히는 포스팅이 있었다.
github.com/SpiderLabs/owasp-modsecurity-crs/issues/1181
오 이건 사용할 수 있을 거 같다. 이글에 따르면 오로지 MySQL에서 사용할 수 있다고 한다. 우리의 문제는 PL1으로 보호되어있지만, PL2 예시에 있는
-1'<@=1 OR {a 1}=1 OR '
요고 쓰면 해결 할 수 있다. 설명 들어간다.
이를 이용하여 다음의 쿼리로 cthulhu를 무찌를 수 있다.
* 정말 똑똑한 분들은 세상에 너무 많다. 항상 배운다. 감사한다.
뭐; 사실 필자는 거의 이해도 못하고 복붙으로 해결했다. 물론 Open된 솔루션을 사용하는 게 잘못되었다는 건 아니지만, 필자는 적어도 글을 올리는 사람이니, 이거 끝나면 ModSecurity 사용법을 정확하게 알아보아야겠다. 다음 관문에서 기다리겠다.
'WarGame > Lord of SQL Injection' 카테고리의 다른 글
[LOSI] Lord of SQL Injection Level 35 - Godzilla (0) | 2021.04.24 |
---|---|
[LOSI] Lord of SQL Injection Level 34 - Death (0) | 2021.04.24 |
[LOSI] Lord of SQL Injection Level 32 - Alien (0) | 2021.04.24 |
[LOSI] Lord of SQL Injection Level 31 - Zombie (0) | 2021.04.24 |
[LOSI] Lord of SQL Injection Level 30 - Ouroboros (0) | 2021.04.23 |