目錄
- 4.5 存盤型XSS攻擊
- 4.6 存盤型XSS代碼分析
4.5 存盤型XSS攻擊
??存盤型XSS頁面實作的功能是:獲取用戶輸入的留言資訊、標題和內容,然后將標題和內容插入到資料庫中,并將資料庫的留言資訊輸出到頁面上,如圖71所示,
圖71 輸入留言資訊
??當用戶在標題處寫入1,內容處寫入2時,資料庫中的資料如圖72所示,
圖72 保存留言資訊到資料庫
??當輸入標題為<img src=X οnerrοr=“alert(/xss/)”/>,然后將標題輸出到頁面時,頁面執行了<img src=X οnerrοr=“alert(/xss/)”/>,導致彈出視窗,此時,這里的XSS是持久性的,也就是說,任何人訪問改URL時都會彈出一個顯示“/xss/”的框,如圖73所示,
圖73 存盤型XSS
4.6 存盤型XSS代碼分析
??在存盤型XSS的PHP代碼中,獲取POST引數title和引數content,然后將引數插入資料庫表XSS中,接下來通過select查詢將表XSS中的資料查詢出開,并顯示到頁面上,代碼如下所示,
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>留言板</title>
</head>
<body>
<center>
<h6>輸入留言內容</h6>
<form action="" method="post">
標題:<input type="text" name="title"><br />
內容:<textarea name="content"></textarea><br />
<input type="submit">
</form>
<hr>
<?php
$con=mysqli_connect("localhost","root","root","test");
if (mysqli_connect_errno())
{
echo "連接失敗: " . mysqli_connect_error();
}
if (isset($_POST['title'])) {
$result1 = mysqli_query($con,"insert into xss(`title`, `content`) VALUES ('".$_POST['title']."','".$_POST['content']."')");
}
$result2 = mysqli_query($con,"select * from xss");
if (!$result2)
{
exit();
}
echo "<table border='1'><tr><td>標題</td><td>內容</td></tr>";
while($row = mysqli_fetch_array($result2))
{
echo "<tr><td>".$row['title'] . "</td><td>" . $row['content']."</td>";
}
echo "</table>";
?>
</center>
</body>
</html>
??當用戶在標題處寫入<img src=1 οnerrοr=“alert(/xss/)”/>時,資料庫中的資料如圖74所示,
圖74 存盤到資料庫中的XSS代碼
??當將title輸出到頁面時,同頁面執行了<img src=1 οnerrοr=“alert(/xss/)”/>,導致彈窗,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/337615.html
標籤:其他
