搜索功能
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>小迪博客</title>
<style type="text/css">
.nav li{
background-color: yellow;
padding: 8px 15px;
float: left;
list-style: none;
color:#fff;
}
</style>
</head>
<body>
<ul class="nav">
<li><a href="index.php">网站首页</a></li>
<li><a href="news.php">文章列表</a></li>
<li><a href="file.php">文件操作</a></li>
<li><a href="gbook.php">留言板</a></li>
<li><a href="tools.php">访问查询</a></li>
</ul>
<br><br><hr>
<form id="form1" action="" method="post">
<label for="search">内容搜索:</label>
<input type="search" name="search" id="search">
<input type="submit" name="submit" id="submit" value="提交">
</form>
<?php
include('config.php');
$s=$_POST['search'];
$sql="select * from sy_guestbook where gName like '%$s%'";
$result=mysqli_query($conn,$sql);
if(! $result){
printf("Error: %s\n", mysqli_error($conn));
exit();
}
echo '你搜索的'."'$s'".'结果如下';
while($row=mysqli_fetch_array($result)){
echo '<br><br><hr>';
echo $row['id'].'<br>';
echo $row['gName'].'<br>';
echo $row['gLogo'].'<br>';
}
?>
XSS
如果将搜索内容替换为 <script>alert(1)</script>
可以看到弹窗。
打开 f12 可以看到,输入的变量<script>alert(1)</script>
被直接执行了。说明这里可以执行script脚本,网站显示的内容是用户可控的。
存储型xss
留言:
<form id="form1" name="form1" method="post">
<p>
<label for="textfield">ID:</label>
<input type="text" name="id" id="textfield">
</p>
<p>
<label for="textfield2">昵称:</label>
<input type="text" name="name" id="textfield2">
</p>
<p>
<label for="textfield3">QQ:</label>
<input type="text" name="qq" id="textfield3">
</p>
<p>
<label for="textarea">内容:</label>
<textarea name="content" id="content"></textarea>
</p>
<p>
<input type="submit" name="submit" id="submit" value="提交">
</p>
</form>
<p>
<hr>
<p>留言内容:</p>
<hr>
<p> </p>
<?php
//留言内容存储在数据库里
//留言板需要加载之前的留言内容
//可以提交留言
//提交留言之后需要
//留言存储在数据库里面
//可以加载之前的留言内容
//可以提交新的留言
//提交留言后会加载出来
header('Content-Type:text/html;charset=utf-8');
include('config.php');
$i=$_POST['id'];
$n=$_POST['name'];
$q=$_POST['qq'];
$c=$_POST['content'];
$sql="INSERT INTO `sy_message` VALUES ('$i', 1, '$n', '$q', '$c', NULL, NULL, '1447433541', '183.92.138.25', '湖北孝感', 0, 'yes');";
mysqli_query($conn,$sql);
$sql1="select * from sy_message";
$result=mysqli_query($conn,$sql1);
while($row=mysqli_fetch_array($result)) {
echo '<br><br><hr>';
echo 'ID:' . $row['id'] . '<br>';
echo '昵称' . $row['name'] . '<br>';
echo 'qq' . $row['qq'] . '<br>';
echo '内容' . $row['message'] . '<br>';
}
?>
存储型xss <script>alert(1)</script>
是被保存到数据库里面了的,上面的每次刷新加载留言板,都会显示所有的留言,都会去加载恶意代码<script>alert(1)</script>
,每次刷新都会弹窗,他跟反射型不一样,反射型如之前的搜索的例子,只有每次主动去搜索并显示结果时才会产生。理解时主要还是要看代码去理解,看看作用产生机制是怎样的
这个就是输入输出类带来的安全问题, 它允许外部输入值,并且会把值回显输出来展示,评论区 留言区 搜索区 私信区 商品购买填信息区域等等,看到框就可以插入内容试一下。或者是其他的可以抓包修改控制的地方也可以
根据网站的功能决定寻找漏洞思路,理解各种原理。 比如说反查IP ua之类的网站,是不是存在xss漏洞? 抓包修改UA头,服务器接收到信息后返回到浏览器, UA头会回显在网站页面上