目录
1. 正文
1.1. 加解密、二次、DNS log注入
注入原理,延时案例,实际应用(中转注入)
DNS log:解决盲注不能回显数据、效率低的问题
2. 示例
2.1. sqlilabs-less21-cookie&加解密注入
- 查看数据包相当显眼的加密后的参数uname,依次URL解密后再BASE64解码出现提交过的用户名
%3D
为URL转码后的=
, 同%20
为空格
cookie注入base64加解密- 数据在HTTP包中为加密后数据,php代码中必存在解码再拼接操作,注入语句因此需要相同的加密操作
可查找其他类似网站测试: inurl:id=MQ==
以上界面出现在正常登录less-21后获得的页面,仅作为知识点讲解
2.2. sqlilabs-less24-post&二次注入
2.2.1 理论注意事项
- 注入地点产生方式不一样,因此二次注入无法通过工具、手动测试,
- 产生在审计源码,源代码可以找到漏洞,(白盒:有源码测试),前端、黑盒测试找不到
- 有数据互联的地方容易出现,注册账号、修改密码等
SQL注入防御绕过——二次注入
第一步:插入恶意数据 进行数据库插入数据时,对其中的特殊字符进行了转义处理,在写入数据库的时候又保留了原来的数据。
第二步:引用恶意数据 开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据,没有进行进一步的检验的处理。
2.2.2 less24测试
-
注册账号,账号名为已存在的admin的改:
admin'#
-
查看数据库信息,已经插入
-
修改密码。修改密码语句
$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
-
加上用户名造成
$sql = "UPDATE users SET PASSWORD='$pass' where username='admin'#' and password='$curr_pass' ";
造成修改用户admin的密码
2.2.3. 注意补充
- 注入式遇到前端HTML代码阻碍提交表单时可以修改HTML代码
- 后端需要了解代码,明了账号还是密码部分可以触发二次注入
- 修改密码也可以造成注入
2.3. sqlilabs-less9-load_file&DNS log带外注入 ☆这里没记住
- 需要注入点高权限,对于mysql是root权限,必须有文件读写权限
- 有文件读写不一定后门可以用,写上去可能出现无法解析的情况
- 采用盲盲注仍旧无法显示结果,采用工具尝试DnsLOG注入
【http://ceye.io/】打不开了
python2 —> DnslogSqlinj
concat(); # 拼接多个字符串到一个
LOAD_FILE(file_name) # 读取文件并返回文件内容为字符串
2.4. py-DnslogSqlinj-dnslog注入演示脚本演示
手动注入出现反复的动作,比如加解密,反复加解密
sqlmap可自制插件,没有插件开发插件或者中转注入
<?php
# 给每个注入参数添加加密功能
$url='http://xxxx/job_bystjb/yjs_byszjs.asp?id=';
$payload=base64_encode($_GET['x']);
echo $payload;
$urls=$url.$payload;
file_get_contents($urls);
echo $urls;
?>