(CVE-2018-6893)Finecms-5-2-0-SQL注入漏洞(dns注入-时间盲注)记录
(CVE-2018-6893)Finecms-5-2-0-SQL注入漏洞(dns注入-时间盲注)记录
0x00
最近遇到个站用的是finecms,然后看漏洞库有一个SQL注入的漏洞,试了试符合漏洞库上说的特征,输入以下payload正常显示,如果更改内容可以导致报错。(2e746573747465737473742e636579652e696f5c5c616161)是unc路径的十六进制编码。
payload:
1 | |
随便更改一下payload的内容可以导致报错并且泄露查询语句。
看了网上的方法都是使用dns注入得到结果的,然后我也去了解并且复现了了一下dns注入,因为确实还没使用过这种方法进行注入。
PS:随便一提,我这个站貌似用不了,可能是后台数据库不解析域名或者是设置不能用load_file。
0x01 DNS注入
**条件:**1.得有SQL注入点。2.能使用load_file()函数(能使用的条件是mysql的secure_file_priv没有设置)3.目标启用域名解析。4.mysql得运行在Windows系统,因为linux系统没有UNC路径。
原理:
1.load_file()函数用法
select load_file(路径); 用于读取文件内容然后返回输出,这个路径可以是绝对的也可以是相对的,也可以是远程文件。
例如访问一个网络路径如baidu.com/aaa,这样的,就会请求DNS服务器解析域名,就可以在DNS服务器日志中看到。
比如我们用以下语句查询:
1 | |
就会请求DNS服务器解析域名,然后会留下一个数据库名字.域名的解析记录。
2.UNC路径
就像如果你共享一个文件夹,这个文件夹的路径就会变成(\\服务器名\文件夹的路径)这样的形式。例如
1 | |
那么要获得一个dns域名可以使用http://ceye.io/提供的服务
注册拿到账号登录即可看到提供测试的域名。
像我们访问//22333.域名//aaa这样的路径,就可以在dns解析日志里看到了。

如果使用sql语句,一般payload为:
1 | |
反斜杠用来转义\号,“\\\\”,就是2个反斜杠。
验证测试:
使用mysql命令执行
1 | |

然后就可以看到平台的结果了
0x02 时间盲注实验
上面也说了,这个站不能进行DNS注入,那么只好试试时间盲注了。
把payload改成:
1 | |
发现有明显延迟,于是使用sqlmap指定注入点测试,能检测出注入点,但是不能爆出数据库。
于是用土方法试了试
payload:
1 | |
回显数据库错误,爆出的语句把database()后的1改为了’sr_1’
然后发现我不管输入啥都是会改成sr_+输入(后面测试爆表的语句也会修改substr()函数的第二位参数)
突发奇想,试试加引号不知道会不会被替代,随后测试一个payload
1 | |
存在延时,验证通过,比较菜不知道这个能不能用sqlmap指定参数,直接自写脚本跑起就行,经过测试后面字段和表也可以这样爆,payload类似下面:
1 | |

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!,本博客仅用于交流学习,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 文章作者拥有对此站文章的修改和解释权。如欲转载此站文章,需取得作者同意,且必须保证此文章的完整性,包括版权声明等全部内容。未经文章作者允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。若造成严重后果,本人将依法追究法律责任。 阅读本站文章则默认遵守此规则。