bugku-flag在index里

本文介绍了如何利用PHP的本地文件包含漏洞和php伪协议来解码base64获取源代码,从而找到隐藏的flag。通过分析题目步骤和源代码,强调了include()函数在过程中的作用,以及base64编码在防止代码执行中的关键角色。
摘要由CSDN通过智能技术生成

bugku-flag在index里

解法:

1、首先打开这道题,页面只给你click me? no,点击进去显示test5
2、查看源代码,无果;第二步bp,无果
3、结合到题目,flag在index里,尝试http://123.206.87.240:8005/post/index.php?file=index.php,发现什么都没有。
4、看wp,了解到这题是经典的本地文件包含漏洞+php伪协议的结合应用
这里用到了php的封装协议:http://php.net/manual/zh/wrappers.php.php(看里面的php://filter部分)
5、file=php://filter/read=convert.base64-encode/resource=index.php的含义

  • 这是一个file关键字的get参数传递
  • php://是一种协议名称
  • php://filter/是一种访问本地文件的协议index.php在本地
  • /read=convert.base64-encode/表示读取的方式是base64编码后
  • resource=index.php表示目标文件为index.php。
    通过传递这个参数可以得到index.php的源码

6、通过上述编码后经base64解码,得到源代码和flag
分析源代码:

<html>
    <title>Bugku-ctf</title>
    
<?php
	error_reporting(0);
	if(!$_GET[file])
	{echo '<a href="./index.php?file=show.php">click me? no</a>';}
	$file=$_GET['file'];
	if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
		echo "Oh no!";
		exit();
	}
	include($file); 
//flag:flag{edulcni_elif_lacol_si_siht}
?>
</html>

include()函数是关键

  • include()函数:表示从外部引入php文件并执行,此时经代码分析,其意识是如果执行不成功,就返回文件的源码

  • include的内容是由用户控制的,所以通过我们传递的file参数,include()函数引入了index.php的base64编码格式,因为是base64编码格式,所以执行不成功,就返回了源码。

  • 如果不进行base64编码传入,就会直接执行,得不到源码,而flag在注释中,就得不到了。

参考:
谈一谈php://filter的妙用

文件包含漏洞学习总结

PHP之伪协议深入理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值