secret_key伪造session来进行越权
从swpuctf里面的一道ctf题目来讲解secret_key伪造session来进行越权。
以前没有遇到过这种题目,这次遇到了之后查了一些资料把它做了出来,记录一下知识点。
参考资料
首先我们进行登录,这里没有注册按钮,所以我们随意输入账号密码即可以登录。
我们使用test/test进行登录
可以看到有一个upload模块,进行点击,返回权限不够的提示。
可以猜测这里我们是需要管理员的权限才可以进行文件上传
再查看一下源代码,里面有一个404 not found的提示
于是我们构造一个不存在的页面,使其服务器返回404页面,burpsuite抓包查看
可以看到404界面服务器返回了
这里的base64编码我们进行解密之后得到是:
解密之后我们得到了secret_key的值,这里验证了我们最开始的结论,正是要伪造管理员的 session 登录之后拥有upload的权限。
对于官方wp,这个地方的绕过是用的另一种方式
我们继续使用刚才的思路进行伪造。
关于session伪造的相关博客:
python脚本地址:
这里需要提到的是:我们需要知道服务器后端使用的python版本是2或者是3,因为通过这两个版本进行加密的session解密出来的格式是不一样的。
这里经过测试我们可知后端的python的版本是3.x的
接着我们将自己加密后的session和screct_key放进python脚本里面跑出解密后的session
我们把id改成1,用户名改成admin,其余不变进行session加密
最终得到admin加密之后的session:
点击upload使用burpsuite进行抓包,将Session更换成我们伪造的session,权限符合,进入
upload页面有后端的代码:
一个是检测来到upload页面的权限,另外一个是flag所在的位置,即./flag/flag.jpg
所以接下来要做的事情很明确,我们需要将上传的压缩包能够读取服务器端的文件。
这里使用linux里面的软链接达到这个效果,不过我们需要先填入需要读取文件的路径。
我们先使用:
看看能不能读到东西
看出来我们可以使用这种方式读取文件,接下来我们可以看一下/proc/self/environ,能读到uwsgi配置文件
这里跟题目环境不太一样,不懂开发的我确实找不到路径,第二种方法就是在linux中,/proc/self/cwd/会指向进程的当前目录,当我们不知道flask工作目录的时候,我们就使用/proc/self/cwd/flag/flag.jpg来访问flag.jpg
(因为代码里面已经显示了flag.jpg在当前目录下的/flag/flag.jpg这个位置)
上传之后即查询到了flag的值
__EOF__

本文链接:https://www.cnblogs.com/Cl0ud/p/12176979.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!