Wargame/Webhacking.kr

webhacking.kr - old 23

G_OM 2024. 3. 15. 13:27

 

 

문제 화면이다.

 

'<script> alert(1);</script> inject 하면 문제 해결이라고 합니다.

 

XSS 관련 문제인거같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

양심 없게 한번 써보자 어차피 필터링 어느 정도인지는 봐야 하니까.

 

 

 

 

 

 

 

 

 

 

 

당연히 막힌다.

 

다른 것들도 실험해 보자.

 

 

 

 

 

 

 

 

[<,>,<>,/,(),(,),1,;]

 

을 대입해 봤더니 정상적으로 출력이 되었고

 

 

 

[alert,script,img,table]

 

이러한 tag_name 종류들은 다 막힌 거 같다. (예시 보다 더 많이)

 

대문자도 물론 막힌다.

 

그 외 상관없는 문자, 문자열들은 정상적으로 출력이 된다.

 

 

 

 

 

 

URL Encode으로 한번 해보자.

 

특수문자들은 필터링에 막히지 않으니 encode 해봤자 의미가 없다 그럼 공백을 한번 넣어보자.

 

<s%09c%09r%09i%09p%09t>a%09l%09e%09r%09t(1);</s%09c%09r%09i%09p%09t>

 

 

 

 

 

 

 

 

안되네......

tab 이 막힌다면  띄어쓰기인 '%20'도 막힌 다는 뜻이니 그만 알아보자..

 

 

 

 

 

 

 

구글링 해서 찾아본 결과

 

eregi 함수에 대한 취약점인 거 같다. [현재 preg_match 함수로 사용되는 정규표현식을 이용한 대소문자 무시 검색] 

 

이 취약점은 PHP 7.0.0 버전부터는 완전히 제거되었다고 한다.

 

따라서 잘 안 쓴다고 생각하면 될 거 같다.

 

일단은 문제를 풀자.

 

 

 

 

 

 

 

 

 

 

eregi 우회를 통한 NULL byte Injection %00(URL) 이 있으면 문자열 검사를 하지 못한다.

 

<s%00c -> <sc으로 문자열 검사 없이 입력이 된다.

 

%00 -> NULL byte