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

XSS挑戰賽(3)

檢視關鍵程式碼:

<?php 
    ini_set("display_errors", 0);
    $str = $_GET["keyword"];
    $str00 = $_GET["t_sort"];
    $str11=$_SERVER['HTTP_REFERER'];
    $str22=str_replace(">","",$str11);
    $str33=str_replace("<","",$str22);
    echo "<h2 align=center>沒有找到和".htmlspecialchars($str)."相關的結果.</h2>".'<center>
    <form id=search>
    <input name="t_link"  value="'.'" type="hidden">
    <input name="t_history"  value="'.'" type="hidden">
    <input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">
    <input name="t_ref"  value="'.$str33.'" type="hidden">
    </form>
    </center>';
?>

可以看到有三個引數是我們可以控制的

<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_REFERER'];

前兩個引數都使用 htmlspecialchars 進行了過濾,最後一個引數只進行了尖括號的替換,又回到了第十題,不過引數變成了 HTTP 請求頭中的 HTTP_REFERER

抓包修改,然後將第十關的payload放進去即可,如圖:

發包後點擊輸入框,成功XSS

十二關也是考察HTTP請求包結構的

關鍵程式碼為:

<?php 
    $str11=$_SERVER['HTTP_USER_AGENT'];
    $str22=str_replace(">","",$str11);
    $str33=str_replace("<","",$str22);
    echo '<input name="t_ua"  value="'.$str33.'" type="hidden">'
?>

將 user-agent 改為 第十關的 payload,如圖:

抓包修改請求點選一氣呵成

進入十三關

關鍵程式碼為:

<?php 
setcookie("user", "call me maybe?", time()+3600);
$str11=$_COOKIE["user"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo '<input name="t_cook"  value="'.$str33.'" type="hidden">'
?>

與前兩關類似,修改cookie中的user值即可

繼續一氣呵成

進入十四關

關鍵程式碼如下:

<center><iframe name="leftframe" marginwidth=10 marginheight=10 src="http://www.exifviewer.org/" frameborder=no width="80%" scrolling="no" height=80%></iframe></center><center>這關成功後不會自動跳轉。成功者<a href=/xss/level15.php?src=1.gif>點我進level15</a></center>

環境有問題,考點是圖片EXIF構造XSS

shy師傅對此類XSS復現的連結:https://blog.csdn.net/qq_32393893/article/details/104814749

第十五關

關鍵程式碼為:

<head>
        <meta charset="utf-8">
        <script src="angular.min.js"></script>
<script>
<?php 
ini_set("display_errors", 0);
$str = $_GET["src"];
echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>';
?>

可以看到這裡包含了:

<script src="angular.min.js"></script> 

而對其 ng-include,有:

所以我們可以用來包含一個存在XSS漏洞的HTML介面,同一域名也很容易滿足,因為XSS-labs都在同一域名下。

因為使用了htmlspecialchars函式過濾,所以我們不考慮使用尖括號等敏感字元。

使用level4.php的介面,payload為:

level15.php?src='level4.php?keyword=" onclick=alert(1) "'

可以看到第四關的介面被包含了進來

點選搜尋框XSS

參考連結:

https://0verwatch.top/xss-game.html