今天是2026年7月31日

这次分享的是Polar靶场做题题解

Polar靶场:

1.题目信息:

进入靶场后可以看到提示:

这暗示我们要看某些文件,用dirsearch扫一下,发现一个可访问文件:

进入这个文件目录可以看到题目源码:

右键查看网页源代码可以看到排版后的源码:

这段代码的逻辑是只要输入的字符串存在sys nb就返回True,要拿到flag就必须要同时满足两个条件:

条件1.不能匹配到正则sys.nb
条件2.字符串中必须要有sys nb

这明显矛盾,但还是有漏洞,pcre正则回溯有上限,只要一瞬间出现大量字符正则匹配就会失效,所以可以在 sys nb 后面塞大量字符,让 preg_match 因为回溯超限匹配失败返回 false,payload:

用python输出print("EEEEE"*1000000),然后把输出后的大量字符放到sys nb后面就能拿到flag

最后拿到flag:flag{4560b3bfea9683b050c730cd72b3a099}

2.题目信息:

进入靶场可以看到一段代码:

这段代码的意思是不能出现以下这些字符包括大小写:
cat|more|less|head|tac|tail|nl|od|vim|uniq|system|proc_open|shell_exec|popen|空格
并且要使yyds==666,sys不能出现以上字符,否则输出nonono,于是我们可以用${IFS}或%09来代替空格,用passthru()函数来代替输出,构造payload:

http://080507e6-dc3e-44f7-878d-38f60a5a9ac9.www.polarctf.com:8090/?sys=passthru('ls${IFS}/');

成功看到根目录:

接下来读取根目录的flag,用\来绕过cat过滤:

成功拿到flag:flag{j6856fd063f0a04874311187da1191h6}

3.题目信息:

进入靶场:

题目让我点到第九个按钮就给我flag,右键查看可以看到这些按钮的编号:

我们直接在前端对编号id进行修改试试:

点击第一个按钮:

直接拿到flag:flag{7d43cc8863ad0ee649048e562fde53ec}

4.题目信息:

进入靶场是一个小游戏:

查看源码,发现几个js文件,其中有一个叫main.js的文件里有一串编码,我在网上搜了一下发现这叫JS无字母数字表达式(俗称 []()!+ 编码)。直接在控制台中粘贴,拿到flag:flag{fdf9a88ec4fdd9e3dedaafeece5cc248}

5.题目信息:

进入靶场:

打开源码可以看到一段提示:

我们用dirsearch扫一下:

扫到了/robots.txt目录,这是控制爬虫流向的文件,进入这个文件发现了flag3,证明前面还有flag1和flag2:

回到主页面,我用BP抓了个包,再放包发现了flag2:

最后我在主页面用HackBar发现了cookie的值为id=0,我把0改为1拿到了flag1,至此,三个flag碎片全部到手拼一下拿到完整flag:flag{7ac5b3ca8737a70f029dc0ad71dadd11}

6.题目信息:

进入靶场:

先点一下登录:

再看看注册:

用admin用户名注册发现已经被注册了:

看一下cookie,发现有一个叫jwt的,但没有值:

我们随便创个号登进去,会·发现jwt有值了:

我去网上搜了一下发现JWT是一种基于 JSON 格式的开放标准,用于在各方之间安全地传输声明。它通常用于 身份验证 和信息交换场景,具有轻量、自包含、无状态等特点。我们可以到jwt加解密网站上把信息进行篡改以达成越权:

但它提示需要密钥,我又搜了一下,得知用jwt-cracker可以破解密钥,于是我找到了这个工具并下载下来了:

我直接把这个工具装到我的虚拟机中来对jwt密钥进行破解,拿到密钥:SYSA

成功用admin生成jwt:

直接替换:

刷新页面后成功拿到flag:flag{ec39c705cfb5295f9dddcedc819a1659}

7.题目信息:

进入靶场:

查看源代码可以看到疑似学号的数字:

我们用这个数字来进行登录试试:

提示登录成功,但没有任何flag的影子,我尝试了抓包也没有结果,直到我突发奇想把学号的尾数改成2,发现回显变了:

我意识到这题可能就是这样做的,于是我一个一个修改、拼凑,最终成功拿到flag:flag{dlcg}

由于时间仓促,所以只做了7题,今天到此结束,现在是2026年7月31日23点50分,感谢您的阅读。