<?php
$a = $_GET['a'];
if(eregi("script", $a){
echo "detected!<br>";
}else{
echo "bypass<br>";
echo $a;
}
?>
위와 같이 eregi 함수를 사용하여 script 문자열을 필터링할 때 php 5.3+ 부터는 널바이트 삽입을 통해 우회가 가능하다.
어떠한 것들이 필터링 되었는지 특수문자도 입력해보고 ScriPt등과 같이 대소문자를 조합하여 입력해보고 테스트한 결과
2글자 이상의 문자열을 입력했을 때 no hack이라고 필터처리된다. 위에서 언급한 것과 같이 eregi 함수를 사용했고 php 5.3+ 이라면
널바이트 삽입으로 필터링을 우회할 수 있을 것이다.
따라서 %00<script>alert(1)</script>을 URL에 입력한다. 주의할 점은 입력폼에 삽입을 하면 %부분을 URL 인코딩하여
index.php?code=%2500%3Cscript%3Ealert%281%29%3B%3C%2Fscript%3E 같이 전송하기 때문에 URL에 직접 입력한다.
23번 문제는 필터링 우회, eregi 함수 취약점에 관한 문제인 것 같다.
'WEB Hacking > webhacking.kr' 카테고리의 다른 글
[webhacking.kr] 18번 SQL 인젝션 (0) | 2018.08.29 |
---|---|
[webhacking.kr] 39번 SQL 인젝션 (0) | 2018.08.28 |
[webhacking.kr] 26번 (0) | 2018.08.24 |
[webhacking.kr] 20번 (0) | 2018.08.24 |
[webhacking.kr] 24번 (0) | 2018.08.23 |