polar靶场2023冬季个人挑战赛writeup-web
简单
cool
1 |
|
不能用尝试执行system,我们来试试用passthru()执行一下ls

很好,进展很顺利,由于过滤了flag,我们直接用cat *来试试

ok,成功取得flag。
upload

打开源代码。发现有个注释,很像某种传值

试试加上去,发现出现了代码

审计一下php代码,发现是通过字符串匹配,然后将其替换为空来过滤掉相关后缀的文件。
先来试试上个图片马,发现似乎不会执行图片内的代码,看来只能上传php文件了。

在代码审计中发现,他只会替换一次php,那我们上传一个.pphphp让他在替换后变成.php不就可以了吗?直接试试

似乎成功了,直接启动蚁剑拿取flag

cookie欺骗
先打开一遍,然后刷新用burpsuite劫持发现cookie里面有个参数user

直接修改为admin,然后放行拿取flag

干正则
1 |
|
经过代码审计,我们发现我们需要完成两个任务
- 把$a[0]修改为
www.polarctf.com - 绕过
preg_match('/flag\.php/', $ip)检查
我们将id构造为id=a[0]=www.polarctf.com,这样我们a[0]=www.polarctf.com通过@parse_str把原来的$a替换成了www.polarctf.com,完成了第一个任务。

接下来我们需要构造命令,首先使用;结束掉Ping命令,然后再来考虑绕过,我第一时间想到的是cat *,然后不行

我们再来试试tac,倒置版的cat,成功拿取flag

下面有个常见的cat的替代方案

还可以用sort来排序且展示所有文件的内容
中等
phpurl


靶机给出的两个文件,首先我们来看这个文件名,直接用base64decode解码得到如下

打开这个页面我们得到php代码页面
1 |
|
简单分析得到,我们要传入一个url encode后的xxs
这里有一个陷阱,直接在本页面传入sys值什么反应都没有,这是因为这只是代码页面,我们要回到初始页面进行传值

出现了这样的问题,很明显我们没有传递到url encode值进去,在服务器那端接受到的是普通的"xxs",我们进行二次encode再传递即可成功获取到flag

ezphp

页面没有隐藏信息,既然爬虫,那我就直接上目录爆破了

都访问一遍,发现两个比较重要的目录:/file/和/uploads/

两个php都访问一下
file.php:
1 |
|
很明显是个文件包含,或许我们可以通过隔壁的upload上传一些东西来包含一下?


上传文件限定了jpg之类的,很明显,我们需要做个图片马
用copy命令在cmd下制作一下phpinfo()的图片,看看有没有诈


文件在/uploads/images下

上传成功,我们再来构造一下url

居然没有诈,直接构造图片马

蚁剑启动!

在用户目录下找到了flag

你的马呢?

那我非得试试()

那就跟着他试试


分别提交了一个有php和一个没带php的,看来会检测文件内容,检测方式就是是否有php。那我修改一个php标签
1 | @eval($_POST['hacker']); |

显示上传成功,但是服务器没有执行脚本,直接把内容打了出来

我们发现打开靶机的时候,他有一个file的参数,那我们把我们这个jsp文件传进去试试
浏览器显示为空,很明显里面的php标签被执行了,直接用蚁剑连接

测试成功,直接拿取flag
