bp靶场业务逻辑漏洞
修改商品价格
目标是修改价格后低价买下这件夹克,再home这个页面的第一个商品就是

点击Add to cart,抓包,发现price的值可以该,改成000发现不行,0.00也不行,改成10后发现购物车里面有了一件0.1美元的夹克,我们有100美元,直接买,通关.后来我再试了一次,看看这个改价格的机制是什么,我把
price的值改成700,里面就多了一件7美元的夹克,但是改成000也不能0美元买啊,觉得这个逻辑应该不允许价格为0,其他都可以


解决,下一关
高级版修改商品价格
还是买那个夹克,但是这次抓包没有显示价格了

Quantity是商品数量,改成0后就是购物车变空,但是改成-1后,购物车多了个数量为-1的jacket,点击下单,报错Cart total price cannot be less than zero购物车总价不能小于零

这时候,先把jacket数量改回1,我们看看其他商品,比如Snow Delivered To Your Door,单价30.31美元,如果抓包把购买数量改成-44,1337-44*30.31=3.36,我们就可以买下。

事实证明可以这样,ok
Inconsistent security controls
该实验室的逻辑缺陷允许任意用户访问本应仅对公司员工可用的管理功能。要解决实验室问题,请访问管理面板并删除用户carlos
进去后它给了我们一个邮箱attacker@exploit-0ab500ae0367983780d2b12701650029.exploit-server.net
Displaying all emails @exploit-0ab500ae0367983780d2b12701650029.exploit-server.net and all subdomains

然后还有一个exp服务器,可以查看访问https://exploit-0ab500ae0367983780d2b12701650029.exploit-server.net/及其子目录的日志

随便注册账号,返回Emailclient看信息,点击信息里面的链接完成注册
访问主页admin子目录,发现访问不了

之前注册页面提示我们,如果我们为dont什么什么的工作,请使用@dontwannacry电子邮件地址,我们把邮箱地址改一改

然后发现可以访问/admin目录了

删除carlos即可
Flawed enforcement of business rules
This lab has a logic flaw in its purchasing workflow. To solve the lab, exploit this flaw to buy a "Lightweight l33t leather jacket".
这个实验室的采购流程存在逻辑缺陷。为了解决实验室,利用这个缺陷购买“轻量级l33t皮夹克”。
You can log in to your own account using the following credentials: wiener:peter
您可以使用以下凭据登录到自己的帐户:wiener:peter
登录进去,主页底部多了个订阅什么什么的

随便搞个邮箱订阅,返回弹窗

已知顶部有个提示,说新用户有优惠卷NEWCUST5

都apply上,发现还是很贵

但是试了一下,可以反复使用优惠卷,但是不能连续添加两个同样优惠卷,所以两张优惠卷交替添加,直到够钱

然后买了即可。
Low-level logic flaw
这关登录后照样抓包添加购物车的页面,修改商品个数的地方发现最大只能填99,100会提示参数无效

我们就拿商品个数为99的数据包去一直爆破,我发了1000多个包,发现总价变成负数了。那看看能不能变成0呢

我把商品删除,重新爆破,换成300、200等请求次数,价格都是负的,但是100的时候是正的,所以应该把范围缩小到100--200,但是好像也不得啊。
后来我发现196个的时候价格是负数,然后一个一个增加商品数量,负数绝对值是在减小的,如果一直点击可以减到0,看来这个逻辑是价格会随商品数量增加呈现周期性变化。这题参考这位大佬的吧,原理是整数溢出,理解起来倒是简单,但是我数学不好,推理不出,反正就是把价格搞到一个负数再用其他商品凑成正数就得了。(参考这个大佬做的https://www.freebuf.com/articles/web/404230.html)
折磨了很久,终于搞得了,老是把控不住爆破次数。。。。


Inconsistent handling of exceptional input
这关输入一个比较长的邮箱注册但是后缀是@exploit-0a37004b040c7a0b8166b0330198001d.exploit-server.net
发现展示信息的地方net不见了,看来展示邮箱的信息有长度限制,计算出是255

于是可以用截断的方法使得邮箱后缀是@dontwannacry.com
a='q'*238
print(a+"@dontwannacry.com")
print(len(a+"@dontwannacry.com"))
# qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq@dontwannacry.com
因为他说Displaying all emails @exploit-0a37004b040c7a0b8166b0330198001d.exploit-server.net and all subdomains
显示所有电子邮件 @exploit-0a37004b040c7a0b8166b0330198001d.exploit-server.net 和所有子域
所以可以用下面的来注册
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq@dontwannacry.com.exploit-0a37004b040c7a0b8166b0330198001d.exploit-server.net

显示我们邮箱是@dontwannacry.com后缀的了,可以进管理界面删除了

Weak isolation on dual-use endpoint
注册后更改密码抓包,删除current密码字段,把用户名改成administrator即可,然后登录管理员账号操作就得了



Insufficient workflow validation
本实验对采购工作流程中的事件顺序做出了错误的假设。为了解决实验室,利用这个缺陷购买“轻量级l33t皮夹克”。
这靶场告诉我们如果不能直接买的话,就借助其他商品发现漏洞。
比如说买Conversation Controlling Lemon
点击place order 抓包,发现会请求/cart/checkout,这请求又会跳转到
/cart/order-confirmation?order-confirmed=true

现在添加Lightweight "l33t" Leather Jacket进购物车,点击购买后抓包
POST /cart/checkout HTTP/2
Host: 0a4a00300374c0a182034cba006a00a7.web-security-academy.net
Cookie: session=LZdKsAqShz7CF87VdKovbJOYVVa7paMA
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:131.0) Gecko/20100101 Firefox/131.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 37
Origin: https://0a4a00300374c0a182034cba006a00a7.web-security-academy.net
Referer: https://0a4a00300374c0a182034cba006a00a7.web-security-academy.net/cart
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
csrf=6aqT97TN07TzLTmeOvOnjhpzW5p9m7hV
数据包的/cart/checkout直接改成/cart/order-confirmation?order-confirmed=true,方法改成GET

Authentication bypass via flawed state machine
登录后有个角色选择器,抓包改角色是管理员,发现没用。。。


那就放掉跳到选角色页面的包,直接请求home页面(根目录)

(把上面那个role-selector删掉)
发现直接变管理员了。。。

Infinite money logic flaw
又是订阅,直接输入自己邮箱订阅

获得SIGNUP30
账号界面有礼品卡兑换功能,主页有个礼品卡商品

用折扣卡购买礼品卡后获得兑换码,兑换后得到钱,100美元变成103美元了。再次回到home,输入邮箱可以再次获得优惠卷,这次买九张礼品卡
9eSIAmrcla
JA5ibMJAgf
6hG3KX7SSs
A7qoMKWCxB
mHZflE7iKl
SqknMhuZbF
KfJm7XsjB4
VSAlofyi0u
qz6mEQlwzO
然后现在我们有了更多钱,所以继续去获得优惠卷然后用全部钱买礼品卡,刷钱就是了。不过手动太耗时间了,我看了其他大佬的操作,自己试了一下,而且那位大佬漏讲了一些东西,我就详细说明过程吧。
先把bp请求历史清空,然后去home主页点进礼物卡页面,添加礼物卡,回到购物车使用优惠卷买一张礼物卡,然后去账号页面兑换成钱。
这时候在bp的proxy-->proxy settings-->左侧选择session-->找到macro(中文版叫宏),我们点击添加.

然后按住ctrl选择五条记录分别是
POST /cart
POST /cart/coupon
POST /cart/checkout
GET /cart/order-confirmation?order-confirmed=true
POST /gift-card

然后确认,之后选择我们添加的宏(macro),点击编辑(edit)

选择第四条记录,然后点项目设置

设置界面右下角点击添加(add).然后选择响应的HTML数据中Code下面的第一条兑换码,参数名称写gift-card,确定添加.

最后选择第五条记录的项目设置,参数处理的地方,找到gift-card,右边选择Derive from prior response,然后选择响应4.

确定后,宏编辑器右下角选择测试宏.
测试宏
通过状态码判断测试结果,如果成功,刷新账号页面会发现自己的钱增加了.
回到设置界面的session界面,最上面那个Session handling rules点击添加,找到rules actions点击添加,选择run macro(运行宏),选择刚刚我们添加的宏,确认

回到规则编辑器,点击范围(scape),在url scope
中,使用自定义范围,添加下面6条url
https://xxxxxxx.web-security-academy.net/cart
https://xxxxxxx.web-security-academy.net/cart/coupon
https://xxxxxxx.web-security-academy.net/cart/checkout
https://xxxxxxx.web-security-academy.net/cart/order-confirmation?order-confirmed=true
https://xxxxxxx.web-security-academy.net/cart
https://xxxxxxx.web-security-academy.net/gift-card
https://xxxxxxx.web-security-academy.net/my-account
接下来访问https://xxxxxxx.web-security-academy.net/my-account抓包,把这包发到intruder.选none payload,400多个payload数量应该够了
在代理的http历史记录中找到请求/my-account这条记录右键添加到范围

(scope),然后创建单线程资源池爆破(不然钱可能不会增加),怎么搞单线程爆破网上应该很多教的了.
最后说几个坑的地方,就是做这关动作要快点因为lab给的cookie是有过期时间的,超时得重新进入实验室重新登录,cookie会变lab的url也会变,之前配置的那些宏啊规则都要做相应修改,第一次我就是太慢了没搞得()
反正钱够了之后买jacket就得了

Authentication bypass via encryption oracle
此实验包含一个逻辑缺陷,该缺陷会向用户暴露加密oracle。要解决此问题,请利用此漏洞访问管理面板并删除用户carlos。
勾选Stay logged in登录后修改邮箱,但是邮箱格式要输入一个错误的,然后抓包修改邮箱的请求,这里主要是两个数据包


第二个数据包发到重放器,发送查看响应

发现响应包里面有这个东西
<header class="notification-header">
Invalid email address: 1111
</header>
之前cookie里面有notification字段,推测那个header是解码该字段后的内容,我们把cookie中stay-logged-in字段的值替换notification字段的值,再次发包,发现刚刚那个header变成了
<header class="notification-header">
wiener:1729329448766
</header>
推测是正确的,并且知道stay-logged-in的值是用户名加时间戳,而经过实验发现时间戳再一次登录后不会变,所以我们可以伪造管理员的cookie来替换身份。
在更改邮箱处写administrator:1729330294196(因为中途断网了重新登录了一次时间戳变了,各位写自己当时的时间戳就行),点击更改后抓包,notification的值应该就是加密的administrator:1729330294196,我们在请求my-account页面的数据包把这个加密的值替换掉stay-logged-in的值,然后发包,发现还是普通用户

看响应包对应header位置,变成
<header class="notification-header">
Invalid email address: administrator:1729330294196 </header>
应该是notification字段会给非法格式邮箱加前缀Invalid email address: 后编码,所以我们把该字段的值先发到decoder模块,url解码,然后base64解码,删除前23个字节(“Invalid email address: ”长度是23)

删掉后再次base64编码,再url编码,把新值给到notification字段


报错说输入长度必须的16的倍数。
因此要对email输入进行9字符填充,输入xxxxxxxxxadministrator:1729330294196,然后再次抓包,把notification的值发到decoder,url解码,base64解码,删掉前32个字节,再base64编码,再url编码替换Cookie的notification字段的值。


可以看到Invalid email address: 不见了,说明这次构造的编码是对的,用这个base64编码替换cookie的stay-logged-in值。
在浏览器f12,点击存储,改掉stay-logged-in的值,再把session字段右键删掉(不然无效)。

访问admin页面成功

Bypassing access controls using email address parsing discrepancies
If you work for GinAndJuice, please use your @ginandjuice.shop email address
这关目前对我来说太难了,网上也找不到其他人的解答。。。放着先吧
bp靶场业务逻辑漏洞的更多相关文章
- WEB安全第七篇--终结篇考验逻辑思维:逻辑漏洞大汇总(越权、会话逻辑、业务逻辑、暴力破解)
零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...
- WEB安全--逻辑漏洞
业务逻辑问题是一种设计缺陷.逻辑缺陷表现为设计者或开发者在思考过程中做出的特殊假设存在明显或隐含的错误.精明的攻击者会特别注意目标应用程序采用的逻辑方式,设法了解设计者与开发者做出的可能假设,然后考虑 ...
- WEB安全--业务安全漏洞
0x00 索引说明 在OWASP的分享,关于业务安全的漏洞检测模型. 0x01 身份认证安全 1 暴力破解 在没有验证码限制或者一次验证码可以多次使用的地方,使用已知用户对密码进行暴力破解或者用一个通 ...
- .Net高级进阶,在复杂的业务逻辑下,如何以最简练的代码,最直观的编写事务代码?
本文将通过场景例子演示,来通俗易懂的讲解在复杂的业务逻辑下,如何以最简练的代码,最直观的编写事务代码. 通过一系列优化最终达到两个效果,1.通过代码块来控制事务(分布式事务),2.通过委托优化Tran ...
- [SRC初探]手持新手卡挖SRC逻辑漏洞心得分享
文章来源i春秋 本文适合新手参阅,大牛笑笑就好了,嘿嘿末尾有彩蛋!!!!!!!!!!!!!!!!!本人参加了本次"i春秋部落守卫者联盟"活动,由于经验不足,首次挖SRC,排名不是那 ...
- Web安全测试中常见逻辑漏洞解析(实战篇)
Web安全测试中常见逻辑漏洞解析(实战篇) 简要: 越权漏洞是比较常见的漏洞类型,越权漏洞可以理解为,一个正常的用户A通常只能够对自己的一些信息进行增删改查,但是由于程序员的一时疏忽,对信息进行增删改 ...
- 基于 burpsuite的web逻辑漏洞插件开发(来自JSRC安全小课堂,柏山师傅)
基于 burpsuite的web逻辑漏洞插件开发 BurpSuite 提供了插件开发接口,支持Java.Python.Ruby语言的扩展.虽然 BApp Store 上面已经提供了很多插件,其中也不乏 ...
- 挖SRC逻辑漏洞心得分享
文章来源i春秋 白帽子挖洞的道路还漫长的很,老司机岂非一日一年能炼成的. 本文多处引用了 YSRC 的 公(qi)开(yin)漏(ji)洞(qiao).挖SRC思路一定要广!!!!漏洞不会仅限于SQL ...
- 逻辑漏洞介绍 & 越权访问攻击 & 修复建议
介绍逻辑漏洞 逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性.一般出现在密码修改.越权访问.密码找回.交易支付金额等功能处.其中越权访问又有水平越权和垂直越权两种,如下所示. ...
- [原题复现+审计][CISCN2019 华北赛区 Day1 Web2]ikun(逻辑漏洞、JWT伪造、python序列化)
简介 原题复现: 考察知识点:逻辑漏洞.JWT伪造.python反序列化 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台 ...
随机推荐
- vue 控件的淡入淡出
页面代码. 1.首先要用transition 包裹一下,设置name或者不设置都可以,其次transition 下面要有一个div设置v-if来触发移入移出 <transition name=& ...
- 综述😋Security and Privacy Challenges of ✌Large Language Models A Survey
- 在Ubuntu WSL2里配置GDAL Docker环境
在Ubuntu WSL2里配置GDAL Docker环境 启用systemd # Ubuntu中执行 echo -e "[boot]\nsystemd=true" | sudo t ...
- 小程序获取定位完整的封装js(uniapp)
1.小程序获取定位,首先需要在微信公众平台,申请getLocation接口(开发管理->接口设置) 2.在manifest.json打开源码视图,增加代码 "mp-weixin&quo ...
- SM3
算法过程 代码实现 国标 /************************************************************************ File name: SM ...
- # Vue3.5常用特性整理
Vue3.5 发布已近半年,抽空整理下常用的新增/改动特性 响应式 Props 解构 Vue3.5 中 Props 正式支持解构了,并添加了响应式跟踪 设置默认值 使用 JavaScript 原生的默 ...
- Typora+PicGo+Gitee图床
Typora+PicGo+Gitee图床 介绍 Typora:一个用于写文章的Markdown 编辑器,Typora 没有采用源代码和预览双栏显示的方式,而是采用所见即所得的编辑方式,实现了即时预览的 ...
- js提示Cannot read property ‘replace‘ of undefined
JS提示Cannot read property 'replace' of undefined 出现这个错误的原因一般是传的参数为null 在传参之前加个是否为null的判断可以解决异常.
- 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
你好呀,我是歪歪. 事情是这样的,前几天有一个读者给我发消息,说他面试的时候遇到一个奇形怪状的面试题. 歪师傅纵横面试界多年,最喜欢的是奇形怪状的面试题. 可以说是见过大场面的人,所以让他描述一下具体 ...
- Flink - [06] 状态管理
题记部分 一.Flink中的状态 由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态. 可以认为状态就是一个本地变量,可以被任务的业务逻辑访问. Flink会进行状态管理,包括状态一 ...