今天是2026年8月9号
前几天出去旅游了,现在开始步入正轨。
Polar靶场
41.题目信息:

进入靶场会让我们选择角色:

这个小游戏无论我们这么做都会输或平局,在源码中可以看到只有赢了才能拿到flag:

打开BP进行抓包:

可以看到这里的winner(赢家)是ai,我们把它改成我们,观察源码可以得知我们的名字是player(玩家),我们直接改包发包:

成功拿到flag:flag{288CCA1ADB228E10EED4BFD85AC544B8}
42.题目信息:

进入靶场:

似乎是一个搜索页,我们先注册一个账号:

注册后进行登录:

点击查看用户列表:

题目需要我们传入两个参数user1和user2,并且它们不能相等但和md5值要相等,在PHP 中 md5 函数参数期望字符串,传入数组会返回 NULL,NULL 恒等于 NULL,以此绕过 md5 强比较,同时我们可以让数组内的值不同又可以绕过第一层比较,payload:
http://40a2a319-4a4e-4a86-855d-fc5ada7f5878.www.polarctf.com:8090/audit.php?user1[]=a&user2[]=b
成功得到一大串用户名:

此时我在主页源码中发现了一个疑似密码的字符:Admin1234!

我们试试用这些用户名来爆破管理员后台,密码Admin1234!,打开BP进行抓包,将包放到Intruder中:

将username的值添加为payload,再将刚刚得到的用户名全部导入的配置中:

开始爆破:

可以看到只有这一个长度不同,并且进行了302跳转,这个肯定就是管理员账号,于是成功进入管理员后台:

进入后发现后台是一个文件上传点,在源码中可以看到只允许上传的两个后缀:

我们随便上传一个txt文本:

成功了,在文本中写入一句话木马,再抓包改后缀上传:


上传成功后打开蚁剑进行连接:

连接成功,在上级目录找到了一大堆flag:

我们可以在主页的flag认证系统中进行爆破来得到正确的flag:

开始爆破:

成功找到正确flag:flag{T4PwCg1RrQNsO4EcrQmU}
43.题目信息:

进入靶场:

先试试alert弹窗:

成功弹窗得到线索:


告诉我们flag就是图中人物的名字的md5加密值,搜了一下,发现这是JOJO里的白金之星,md5值为dbd65172f0a14c279bc461cd0185c70a,套上flag成功得到正确flag:flag{dbd65172f0a14c279bc461cd0185c70a},md5值的明文为StarPlatinum
44.题目信息:

进入靶场只有一个按钮:

按钮按了也没反应,在源码中找到了一个js文件:

可以看到又一个叫change_background.php的文件,我们访问一下看看:

出现一个ERROR错误,我们在回看js代码发现其中有POST请求表单,请求中有d和p两个参数,我们先看看对这两个参数进行传参会发生什么:

可以看到I want xxx被echo给执行了,这就是RCE,我们把echo换成cat,把I want xxx换成/flag,成功得到flag:flag{cc59f02fd69119d043f8b06d0ab3eb3f}

45.题目信息:

进入靶场:

根据题目名“0e事件”我猜测是要让我们上传一个md5值是以0e开头的值,我在网上找了一下发现“QNKCDZO”这串字符符合我的猜测,payload:
http://f298635e-5870-417d-815f-ae151b21351c.www.polarctf.com:8090/?a=QNKCDZO
成功拿到flag:flag{adc394229ba455abbe56e057f20f883e}

46.题目信息:

进入靶场:

这是一道反序列化题,题目只用到了一个魔术方法destruct:当对象销毁时自动执行,触发后会判断变量$cmd是否为空,所以我们给它赋个值,然后就会被system直接执行,最后payload:
<?php
class A {
public $cmd="ls";
function __destruct() {
if (isset($this->cmd)) {
system($this->cmd);
}
}
}
$a=new A();
echo serialize($a);
?>
我们给cmd赋值了ls,然后ls会被system给执行,等同于system(ls);,传参后成功看到当前目录:

寻找一下flag:

在根目录看到了flag,直接读取:

成功拿到flag:flag{3o84dg7y3q8efhd813yiegfdq8te}
47.题目信息:

进入靶场:

题目只支持上传md后缀的文件来渲染页面,这题我上网搜了一下发现是SSTI 漏洞,利用 Jinja2 内置对象 cycler 的 __init__.__globals__ 拿到 Python 的 os 模块,通过 os.popen() 执行系统命令,如输入{{ cycler.__init__.__globals__.os.popen("id").read() }}就会执行id命令,利用这个漏洞成功找到flag:

由于我的靶场出问题了,所以flag截图无了,但确实拿到了flag:flag{5D4AA108DADC446FE849346A19B6563D}
48.题目信息:

进入靶场:

题目说已经进行了多层过滤,看来常规的函数和命令都被过滤了,但还有一句提示,让尝试执行echo hello命令来获取flag,这说明echo没有被禁,我又尝试了各种命令,发现env命令没有被过滤:

看到是能正常执行的,但这里的flag是假的,接下来我们用dirsearch扫一下看看:

扫到了一个/flag.txt目录,访问看看:

这意思应该是让我们把后缀改为php,把flag中的l改为1,改完再次访问看看:

有线索了,意思应该是传参点为XOR_KEY,传参的值是靶场名Polar我们输入这个命令试试:

发现没有任何回显,我们在前面加上env,因为这个命令可以正常执行,尝试利用它来输出XOR_KEY=Polar的内容:

flag直接就出来了,成功获取flag:flag{e266cfd65ad46a67fc54b0efd38e40dd}
49.题目信息:

进入靶场:

在源代码中得到一串base64编码:

解码得到一段文字:

用dirsearch扫一下发现了一个目录:

在这个目录下发现了大量密码:

这应该是要我们字典爆破,打开BP进行抓包,把包放到Intruder中,在password的值上添加payload,把刚刚得到的密码字典粘贴到配置中后开始爆破:

爆破完成,发现一个长度不同的密码:

这条数据显示的是验证码错误,其他的都是密码错误,说明我们密码是正确的,密码就是:hunangleiSAMA0712,接下来还差验证码,验证码一般都是4-5位数字,我们对验证码进行数值爆破,从0000-10000,可以用py脚本来生成字典,爆破完成后得到验证码是0000:

还有第二关,我们继续用之前的密码字典爆破:

得到了密码:huan9le1Sam0,选择正确图片后得到flag:flag{750a1c9e06998cce3bbb97e1bb73dd56}

50.题目信息:

进入靶场:

要我输入姓名,随便起一个名字,我就起user吧:

这是一个俄罗斯方块小游戏,上面提示我们到10分有奖励,由于太浪费时间,我就不玩了,在源码中可以看到一个js文件,我们打开它:

可以看到这里定义了几个变量,其中有一个叫score(分数)的变量,值为0,我们在控制台中为它赋值10看看:

分数果然被改了,我们随便拿个一分看看:

出现了一个弹窗提示,我突然想到xss弹窗,并且开始的时候还让我们输入名字,于是我在输入框输入xss语句:

点击开始游戏出现了flag:

成功拿到flag:flag{Polar_gift_of_Squirtle}
今天就到这里···
最后:“不必追赶,属于你的总会如期而至。”
今日做题分享
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法