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

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

来到界面

[BSidesCF 2020]Had a bad day1 ~~不会编程的崽_第1张图片

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

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

[BSidesCF 2020]Had a bad day1 ~~不会编程的崽_第2张图片

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

[BSidesCF 2020]Had a bad day1 ~~不会编程的崽_第3张图片

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

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

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

[BSidesCF 2020]Had a bad day1 ~~不会编程的崽_第4张图片 

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

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

[BSidesCF 2020]Had a bad day1 ~~不会编程的崽_第5张图片 

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

PCEtLSBDYW4geW91IHJlYWQgdGhpcyBmbGFnPyAtLT4KPD9waHAKIC8vIGZsYWd7ZmIzZDMxMTgtMTJhZC00ZjIyLThmODEtZjVlZTkyYjJmMjc4fQo/Pgo=

[BSidesCF 2020]Had a bad day1 ~~不会编程的崽_第6张图片 

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

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

读取到后进行base64解码

 

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

你可能感兴趣的:(web安全,网络安全)