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

金歌  金牌会员 | 2024-6-14 18:40:40 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 578|帖子 578|积分 1734

目次
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


随手试试,直接访问到/.index.php.swp
 
最大回溯上限绕过preg_match
  1. import requests
  2. url = 'http://c7800bea-2a12-428d-b1d0-f2272162efa4.www.polarctf.com:8090/'
  3. data = {
  4.     'xdmtql': 'sys nb'+'very' * 250000
  5. }
  6. r = requests.post(url=url, data=data).text
  7. print(r)
复制代码
运行脚本拿到flag 
 


简朴rce 


过滤了空格,可以联想到用include直接包罗/flag 
 
 
蜜雪冰城吉警店


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

 改前端,点单乐成

 
召唤神龙

进来是一个js小游戏,但没有胜利条件啥的,js关键词搜不出什么头绪
在main.js中看到一段很耀眼的jsfuck

   JSFuck 是一种 JavaScript 的混淆技术,它可以将 JavaScript 代码转换成仅由六个字符构成的代码,即 []()!+。这种技术基于 JavaScript 语言的强大特性,尤其是逼迫范例转换和 JavaScript 中的一些奇技淫巧。
  CTF在线工具-在线JSfuck加密|在线JSfuck解密|JSfuck|JSfuck原理|JSfuck算法 
乐成解码拿到flag


seek flag 

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

 抓包,在响应头处拿到flag2

 留意到响应头setcookie,让id=0
本着叛逆的原则,我们可以修改cookie让id为1,乐成拿到flag1


jwt 


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

JSON Web Tokens - jwt.io 
jwt-cracker爆破出密钥为SYSA

然后jwt伪造
 
改cookie中的jwt,然后再次访问
 
进入个人中心,拿到flag 
 


login 

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

然而只是回显登录乐成 

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

iphone


恣意点下Enter
 
 右键查看源码,提示改UA

 改UA为iphone即可拿到flag



浮生日记 


title提示让我们弹个窗
 
测过无ssti,结合题目名字,合理可以想到js注入
发现替换了script为空,然后赋值给value

 
显然可以先闭合value,然后独立出一个script执行恶意代码
payload:
  1. "><scrscriptipt>alert(1)</scrscriptipt>
复制代码
 

点击确定后拿到flag
 

$$ 


 直接$GLOBALS读全局变量就可
payload:
  1. ?c=GLOBALS
复制代码


爆破


   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位就能爆出来

 
 
XFF


直接xff伪造ip即可
 
rce1 


过滤空格用${IFS}绕过即可
 
  1. ;tac${IFS}fllllaaag.php
复制代码
 右键查看源码,拿到flag


GET-POST 


正常传参就行 
 
被黑掉的站 


提示站里还有马
扫出来index.php.bak和shell.php
访问index.php.bak,就是给到一个字典
 
访问shell.php,显然就是拿字典爆破

开爆就完了
拿到flag


签到题 


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

 改didi=yes,发包

base64解码
 访问/data/index.php

替换为空双写绕过即可
payload:
  1. /data/index.php?file=php://filter/convert.base64-encode/resource=..././..././..././..././flag
复制代码
 
base64解码即可


签到 


把disabled删掉就可
 
弹窗 
 
 但提交后还是不行,继续看前端
把maxlength改大即可
 
如下 
 
 

session文件包罗 


发包,看到响应头给了一个PHPSESSID 
点击mydirectory,回显如下

 右键查看源码:

似乎可以恣意文件包罗,尝试读文件
base64解码

 
  1. <?php
  2. session_start();
  3. error_reporting(0);
  4. $name = $_POST['name'];
  5. if($name){
  6.         $_SESSION["username"] = $name;
  7. }
  8. include($_GET['file']);
  9. ?>
  10. <!DOCTYPE html>
  11. <html>
  12. <head>
  13. </head>
  14. <body>
  15. <a href=action.php?file=1.txt>my dairy</a>
  16. <a href=action.php?file=2.txt>my booklist</a>
  17. </body>
  18. </html>
复制代码
session_start()一般是给session反序列化用的,这题考的不是反序列化 
可以直接利用恶意session文件包罗

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


Don't touch me

右键查看源码

访问/2.php
 
把bottom的disabled属性给删掉,点击后跳转/3.php
右键查看源码

 访问/fla.php拿到flag


robots 


访问/robots.txt
 访问/fl0g.php拿到flag

 
php very nice


这不直接喂到嘴边了 
  1. $a=new Example();
  2. $a->sys="system('tac f*');";
  3. echo serialize($a);
复制代码
 


ezupload 


 
改mime type为image/gif即可 
 

连蚁剑,拿flag 
 

cookie欺骗 


cookie改user=admin即可 
 

upload 


 恣意上传一个php文件,发现直接拿掉了后缀,不对其作为php文件进行解析
 回到初始界面,右键查看源码

 访问?action=show_code拿到源码
  1. $is_upload = false;
  2. $msg = null;
  3. if (isset($_POST['submit'])) {
  4.     if (file_exists(UPLOAD_PATH)) {
  5.         $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");
  6.         $file_name = trim($_FILES['upload_file']['name']);
  7.         $file_name = str_ireplace($deny_ext,"", $file_name);
  8.         $temp_file = $_FILES['upload_file']['tmp_name'];
  9.         $img_path = UPLOAD_PATH.'/'.rand(10000,99999).$file_name;        
  10.         if (move_uploaded_file($temp_file, $img_path)) {
  11.             $is_upload = true;
  12.         } else {
  13.             $msg = '上传出错!';
  14.         }
  15.     } else {
  16.         $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
  17.     }
  18. }
复制代码
 替换为空,直接双写绕过即可

可以看到乐成上传php文件

连蚁剑,拿flag
 

干正则 


 
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金歌

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表