23번 - POSIX Regex/PCRE Regex
2020. 10. 15. 14:06
※ 문제될 시에 비공개 처리하도록 하겠습니다. ※
XSS 공격을 하라고 합니다.
저 문구 그대로 제출하니 no hack이라는 문자열이 나오네요.
PHP에는 문자열 비교 함수의 종류가 두 가지 있습니다.
하나는 POSIX Regex이고, 다른 하나는 PCRE Regex 입니다.
POSIX Regex 함수들 eregi, ereg 등의 장점은 속도가 빠릅니다.
하지만, 비교 중간에 NULL 문자를 만나게 되면 뒤의 문자가 남아있다고 할지라도 문자열의 끝이라고 판단하여 더이상 검사를 진행하지 않습니다.
이는 PHP 5.3+부터 발견되어 사용하지 않게 되었으며, POSIX Regex 계열의 함수들을 보완하고 정규표현식을 정교하고 유연하게 만든것이 PCRE Regex 계열의 함수입니다.
POSIX Regex 계열의 함수들은 PHP 6.0부터는 아예 삭제되었습니다.
POSIX 계열의 함수들을 사용할 때 발생되는 취약점을 공략한 문제이므로 NULL 문자를 활용해보겠습니다.
다음은 검열되는 문자입니다.
sc, cr, ri, ip, pt, al, le, er, rt
이 문자열 사이 사이에 NULL 문자를 넣어 payload를 작성해보겠습니다.
<s%00c%00r%00i%00p%00t>a%00l%00e%00r%00t(1);</s%00c%00r%00i%00p%00t>
주소 창에 입력해야합니다.
입력란에 작성하게 되면 한 번더 인코딩이 되어 '%'가 '%25'로 치환되어 들어갑니다.
'[▒] 보안 > webhacking.kr' 카테고리의 다른 글
25번 - PHP Wrapper (0) | 2020.10.16 |
---|---|
24번 - COOKIE/PHP extract (0) | 2020.10.15 |
22번 - blind sql injection (0) | 2020.10.15 |
21번 - blind sql injection (0) | 2020.10.15 |
20번 - time out (0) | 2020.10.15 |