Web發展至今,前端危害最大的是XSS(跨站腳本)和CSRF(跨站請求)漏洞。javascript
<from action="" method="get"> <input type="text" name="xss"/> 文本框 <input type="submit" value="test"/> 按鈕 </from> <?php $xss=@$_GET['xss']; if($xss!==null) { echo $xss; } ?>
代碼說明:php
包含一個表單,用於向頁面本身發送GET請求,帶一個名爲xss的參數;php讀取該參數且不爲空則echo輸出xss參數內容。這裏沒有設置任何過濾和檢查機制,因此xss會執行任何的代碼包含 )在輸出彈窗後HTML代碼也會被改寫;html
反射型xss:前端
瀏覽器 —> 後端 —> 瀏覽器頁面java
<form action="" method="post"> <input type="text" name="xss"/> <input type="submit" value="test"/> </form> <?php $xss=@$_POST['xss']; $con = mysqli_connect("127.0.0.1","root","123456");// 鏈接mysql mysqli_select_db($con,"xss");// 鏈接xss庫 if($xss!==null){ $sql="insert into temp(id,payload) values('1','$xss')"; $result=mysqli_query($con,$sql); echo $result; } ?>
用戶輸入的內容仍是沒有過濾,可是並非顯示在頁面中,而是執行php+mysql命令將內容插入到數據庫中;mysql
mysqli_connect(servername/ip , username , password):sql
設置數據庫的登陸地址,數據庫登陸名,登陸密碼等數據庫
創建MySQL數據庫鏈接後端
【PHP 5.5+ 再也不使用connect進行鏈接數據庫,改用MySQLi或PDO_MySQL來進行鏈接】瀏覽器
mysqli_close() : 關閉數據庫鏈接
mysqli_select:從數據庫表中選取數據
mysqli_select_db():選取數據庫
mysqli_query(參數/sql命令):執行sql命令,可使用參數存儲一個sql命令也能夠在query中直接寫明sql命令
ps:在輸入提交script腳本時候注意字符轉義的問題哦
<?php $sql = mysqli_connect("localhost","root","123456"); mysqli_select_db($sql,"xss"); $shl="select payload from temp where id=1"; $result=mysqli_query($sql,$shl); while($row=mysqli_fetch_array($result)){ echo $row['payload']; } ?>
show.php文件的做用:
鏈接數據庫打開xss庫,執行sql命令查看temp表中的內容
上述的存儲型XSS的流程是:
經過xss.php程序將xss腳本寫入數據庫中,在經過show.php查看存儲在數據庫中的xss腳本,以此達到解析腳本的方法。
xss數據從瀏覽器通過後端寫入到數據庫中,在通過後端調用數據庫內容顯示在頁面上。
<?php error_reporting(0);//禁用報錯 $name = $_GET["name"]; ?> <input id="text" type="text" value="<?php echo $name; ?>"/> <div id="print"></div> <script type="text/javascript"> var text = document.getElementById("text"); var print = document.getElementById("print"); print.innerHTML = text.value ;// 獲取text值輸出print </script>
對xss.php進行分析:
php接收一個name的get請求,input標籤中 id:text得到了name設置的請求值,在script中,print輸出並將text的內容一併輸出,而text的值就是name的請求內容(經過URL進行構造)
而構造的URL:http://localhost/xss.php?name=< img src=1 onerror=alert(1)>
含義是:name爲調用一個 1 文件照片信息(img),若是不存在報錯彈出窗口(alert)並顯示內容爲 1 。
經過xss跨站腳本,來得到用戶的Cookie和其餘有用的信息,利用平臺的特性,xss利用諸如:xss Shell ,BeEF,Anehta,CAL9000……