SQL注入之二阶注入

二阶注入简介


注入分类:

SQL注入一般分为两类:一阶SQL注入(普通SQL注入),二阶SQL注入

什么是二阶注入?

二阶注入就是无法直接注入,它时指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。

注入原理


注入比较:

一阶SQL注入:

      1;一阶SQL注入发生在一个HTTP请求和响应中,对系统的攻击是立即执行的;

      2;攻击者在http请求中提交非法输入;

      3;应用程序处理非法输入,使用非法输入构造SQL语句;

      4;在攻击过程中向攻击者返回结果。

二阶SQL注入:

      1;攻击者在http请求中提交恶意输入;

      2;恶意输入保存在数据库中;

      3;攻击者提交第二次http请求;

      4;为处理第二次http请求,程序在检索存储在数据库中的恶意输入,构造SQL语句;

      5;如果攻击成功,在第二次请求响应中返回结果。

两者危害一致。但是二阶注入很难通过扫描工具直接扫描出来;可以进行黑盒测试,但是想要发现漏洞有一定的难度;最好的发现漏洞的方法是通过白盒审计

引入知识:

mysql_escape_string函数,该函数可以过滤用户输入的参数,如果输入中存在单引号之类的特殊字符,则会在单引号前面添加反斜杠进行转义,但是经过改函数处理的参数在存入数据库时,会被还原成原数据

addsashes函数,作用同上

注入实现


查看源码

发现登陆处的username和password都经过了mysql_real_escape_string函数的转义,直接执行SQL语句会转义’,所以该处无法造成SQL注入。

注册用户的时候用了mysql_escape_string过滤参数:

注入测试

首先查看靶场中的用户列表,发现存在admin用户密码是admin,如下图

接下来注册一个新用户,admin'#,密码是123456,然后进入数据库查看是否注册成功,如下图

接下来登录我们新注册的账户,在这个页面可以进行修改密码,把新密码改成666666,如下图

神奇的事情发生了,数据库中admin'#的密码并没有被修改,但是admin的密码成功被修改,如下图

注入实例

ZZCMS v8.3二阶注入:https://www.freebuf.com/vuls/183360.html

ZoneMinder:https://www.4hou.com/info/news/19267.html

Joomla3.8.2:https://blog.csdn.net/publicStr/article/details/80261667

二次注入漏洞挖掘https://www.secpulse.com/archives/76506.html

二阶注入研究论文:http://www.doc88.com/p-6931153563831.html

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值