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