SQL注入——二次注入
SQL注入——二次注入
0.前言
二次注入是典型的存储类型注入,当在洁面奶有登录等交互界面时,我们可以构造恶意数据存储在数据库中,当第二次调用恶意数据时,该内容会被读取并执行SQL的查询语句,从而造成注入攻击。
注:这里有时候在输入上会纯在字符的长度限制,如果是咋前端,我们可以使用
1.原理
第一步:插入恶意数据
第一次进行数据库插入数据的时候,仅仅对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身包含恶意内容。
第二步:引用恶意数据
在将数据存入到了数据库中之后,开发者就认为数据是可信的了(比较有提前筛选),在下一次需要进行查询的时候,直接从数据库中取出了恶意数据,没有进行进一步的检验和处理,这就形成了最终的SQL二次注入。
2.注入尝试
这里以BUUCTF–October 2019 Twice SQL Injection的作为演示例子,当我们打开界面时间纯在用户登录界面,尝试使用进行登录界面注入
1 |
|
可以看见,尝试注入失败,并没有任何的反馈。
3.注册
查看到有注册界面,点击进行注册尝试,用户采用admin’#,密码随意:
登录之后的界面,显然是没有回显的:
其实在前面也有提到过,在
4.注册爆出数据库名
尝试使用二次注入的办法注册:
1 |
|
登录:
5.注册爆出权限
1 |
|
登录:
6.注册爆出表名
1 |
|
登录:
7.注册爆出列名
看见有flag,直接兴奋
1 |
|
登录:
8.注册爆出列的内容
可恶,有够麻烦的,怎么还有一层
1 |
|
登录:
搞定,收工咧
SQL注入——二次注入
https://one-null-pointer.github.io/2022/08/23/SQL注入——二次注入/