查看: 25114|回复: 13

关于一次对sql二次注入的学习!

[复制链接]
发表于 2016-11-23 14:18:00 | 显示全部楼层 |阅读模式
刚学几天php,然后看到了二次注入这个办法,我就想本地搭建测试下!然后过程如下:
首先附上代码:
[AppleScript] 纯文本查看 复制代码
<html>
<head>
<title>SQL注入</title>
</head>
<body>
<h1>二次注入!<h2>
<form action="" method="post">
用户名注册:<input type="text" name="user"><br>
密码注册:<input type="text" name="pass">
<input type="submit" name="submit" value="注册">
<br>sql插入数据语句如下:</br>
<?php
$user=$_POST["user"];
$pass=$_POST["pass"];
$conn=mysql_connect("localhost","root","root");
if(!$conn){
	die("error!");
}
//if(isset($user1) && isset($pass1)){
$user=addslashes($user);
$pass=addslashes($pass);
mysql_select_db("test",$conn);
$sql="insert into test (test1,test2) values ('$user','$pass')";
$sql1=mysql_query($sql,$conn);
if($sql1){
	echo $sql . "<br>";
} else {
	"写入失败。";
}
/*} else {
	echo "请输入账号密码注册!";
}*/
?>
</body>
</html>

[AppleScript] 纯文本查看 复制代码
<html>
<head>
<title>SQL注入</title>
</head>
<body>
<h1>二次注入!<h2>
<form action="" method="post">
账号查询:<input type="text" name="name">
<input type="submit" name="submit"><br>
<?php
header('Content-type: text/html; charset=utf-8');
$name=$_POST["name"];
$name=addslashes($name);
$conn=mysql_connect("localhost","root","root");
if(!$conn){
	die("error!");
}
mysql_select_db("test",$conn);
$sql="select * from test where test1='{$name}'";
$sql1=mysql_query($sql,$conn) or die(mysql_error());
$rows=mysql_fetch_array($sql1);
$pass=$rows['test2'];
if($sql1){
	
	//$pass=$rows['test2']
	$sql2="select * from test where test2='$pass'";
	$sql3=mysql_query($sql2) or die(mysql_error());
	 echo "<br>";
	 print_r($sql3);
	var_dump($sql3);
	echo "查询语句:" . $sql2;
} else {
	"查询失败。";
}
?>
</body>
</html>

小菜刚学几天php,所以代码写的特别乱,还有很多地方写的多余。但是都是自己慢慢一步步写的,慢慢百度学习的,
并没有copy网上脚本或者修改的。所以代码太渣,还望大家谅解。
总结帮助不太了解的小伙伴理理思路:
1.首先通过账号密码注册向数据库写入单引号。由于存在转移,所以直接注入是不行的。但是我们的单引号会写入数据库中储存。
2.通过查询账号将我们刚才写入的带有单引号的数据select出来。(我写在密码中的,你也就可以这么理解,找回密码处,你输入账号,他就会将密码select出来给你)
这个时候,并没有对单引号进行过滤,所以就造成了引入单引号。造成了注入。
1.png
1.这里我首先写入了账号123456',密码123456的作为测试。很明显看到了单引号被转移了。所以不存在注入。
2.png
刚才的单引号存在数据库中的数据却没有转移,直接就是123456'。
3.png
然后我将类似的注入语句写入了进去,账号123,密码:1' and updatexml(1,concat(0x7e,(version())),0) or ' 类似的报错语句都可以。
4.png
然后我们在查询账号来输出密码。就看到了成功造成了注入。注意看mysql监控中的两条语句的内容和先后顺序。
5.png
然后和上面同样的道理写入查询版本的语句。
6.png
然后也出来了。二次注入就是先向数据库写入带单引号的注入语句,在来查询出来。
文章只为和大家分享科普文,大牛勿喷!同时问个php问题如下:
7.png
如果有学php的小伙伴,可以一起学习php。






评分

参与人数 1i币 +1 收起 理由
linghun + 1 感谢分享

查看全部评分

回复

使用道具 举报

发表于 2016-11-23 15:42:11 | 显示全部楼层
吓到宝宝了,实话说,几天?

点评

好像是第6天了,代码虽少,但我却写了几小时,一直在出错!  详情 回复 发表于 2016-11-23 17:07
回复 支持 反对

使用道具 举报

发表于 2016-11-23 15:48:05 | 显示全部楼层
先学好mysql语法

点评

嗯嗯,90表哥说得在,目前在同时学习mysql语法!  详情 回复 发表于 2016-11-23 17:08
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-23 17:07:49 | 显示全部楼层

RE: 关于一次对sql二次注入的学习!

xiaoye 发表于 2016-11-23 15:42
吓到宝宝了,实话说,几天?

好像是第6天了,代码虽少,但我却写了几小时,一直在出错!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-23 17:08:23 | 显示全部楼层

RE: 关于一次对sql二次注入的学习!

90_ 发表于 2016-11-23 15:48
先学好mysql语法

嗯嗯,90表哥说得在,目前在同时学习mysql语法!
回复 支持 反对

使用道具 举报

发表于 2016-11-23 17:12:22 | 显示全部楼层
不错,妹子有前途!
回复 支持 反对

使用道具 举报

发表于 2016-11-23 21:28:08 | 显示全部楼层
楼主很不错。前几天买了《sql注入攻击与防御》,发现不学php不行了,就开始学。跟楼主学习学习。

点评

大兄弟说笑了!一起学习!  详情 回复 发表于 2016-11-23 23:13
回复 支持 反对

使用道具 举报

发表于 2016-11-23 22:15:51 | 显示全部楼层
厉害了

点评

一起学习走一波!  详情 回复 发表于 2016-11-23 23:13
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-23 23:13:24 | 显示全部楼层

RE: 关于一次对sql二次注入的学习!

周翔宇 发表于 2016-11-23 21:28
楼主很不错。前几天买了《sql注入攻击与防御》,发现不学php不行了,就开始学。跟楼主学习学习。 ...

大兄弟说笑了!一起学习!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-23 23:13:48 | 显示全部楼层

RE: 关于一次对sql二次注入的学习!


一起学习走一波!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

旗下站点

邮箱系统

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2025-5-2 01:08 , Processed in 0.084475 second(s), 22 queries , Gzip On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部