学习到mysql数据库利用报错进行注入,整理了一下个人的学习笔记,仅限于个人的理解。
数据库名- - - - - - - - - -注入语句,得到数据库名
和(选择1 (select count (*), concat(选择(选择concat (0 x7e 0 x27,十六进制(cast(数据库()作为字符)),0 x27 0 x7e))从information_schema。表限制0,1),地板(兰德(0)* 2))x 从information_schema
。表集团通过x))和1=1
,
数据库。表名- - - - - - - - - -注入语句,得到数据库中的表名
和
(选择1(select count (*), concat(选择(选择(选择不同的concat (0 x7e 0 x27,十六进制(cast (table_name字符)),0 x27 0 x7e) information_schema。表table_schema=0 x636d73限制1,从information_schema 1))。表限制0,1),地板(兰德(0)* 2))x 从information_schema
。表group by x)
), 1=1
,
,,自己对表名注入语句的分析:
,,,,首先执行绿色区域之间的语句,从information_schema选择table_name。表talbe_schema=0 x636d73限制1,1。这里的0 x636d73是前面爆出的数据库名的16进制。第二步执行cast()函数,将表名转化为字符,然后执行十六进制()函数,将其转为16进制,最后执行concat()函数,将函数中括号内的内容连接起来只
,,,,浅黄语句为:选择绿色区域之间的语句;进行一次选择。含义:在浅黄语句中,执行一次绿色语句。
,,,,,浅紫色语句为:选择浅黄语从information_schema句。桌子极限0,1;含义,在浅紫色区域中执行一次浅黄语句。
,,,,下一步,concat()函数,,并将结果作为x,放到集团,后执行
,,,,下一步执行,从information_schema选择count (*)。桌子group by concat()浅紫色区域内的内容。
,,,,最终执行从前选择1面所得到的内容——深×××区域内容,解释:深×××区域会生成一个虚拟表,通过查询第一列,将深×××报错的内容显示出来。
函数的部分解释:
,,,, cast(),数据类型转换
演员(表达式,data_type),,表达任何有效的sql语句,如用于分隔两个参数,在为之前的是要处理的数据,在为之后是要转换的数据类型
data_type数据类型,
,,,, Concat ()
没有分隔的连接字符串
至少两个参数
如选择Concat (“ab”、“cd”);,
,,,, Rand()函数,产生从0 - 1之间的随机数
搭配使用,地板()
,,,,地板()
返回一个不大于x的最大整数
,
,,,, Rand ()
返回0到1之间的随机浮点数
另外,关于mysql报错注入的原理,我参考了红黑联盟的一篇文章,个人收获很大。将链接写在下面,
以备自己需要时进行查看。
,,,,,,,,,,,http://www.2cto.com/article/201604/498394.html
,