Web [SWPUCTF 2021 新生赛]ez_unserialize:
这个题先了解一下反序列化:反序列化是序列化的逆过程。序列化是将对象或数据结构转换为可以存储或传输的格式(如JSON、XML或二进制格式)的过程。反序列化则是将这个格式的数据转换回原始的对象或数据结构。
反序列化的应用场景:
- 数据持久化:将对象状态保存到文件中,以便在程序重新启动时恢复。
- 远程过程调用(RPC):通过网络传输对象,以便在不同系统或进程间进行通信。
- Web开发:在Web应用程序中,反序列化常用于处理客户端发送的数据
- 常见的类型
- PHP对象注入:在PHP中,如果未对用户输入进行适当验证和过滤,攻击者可能会构造恶意的序列化字符串,从而在反序列化过程中创建任意对象或调用任意方法。
- Java反序列化漏洞:Java的反序列化机制也存在类似的安全风险。攻击者可能会利用Java类库中的漏洞来执行任意代码或绕过安全限制。
注意:在应用程序的代码中查找反序列化函数(如PHP中的unserialize(),Java中的ObjectInputStream.readObject()等)。
反序列化可以查考这篇:https://blog.csdn.net/doubirui/article/details/136976980?fromshare=blogdetail&sharetype=blogdetail&sharerId=136976980&sharerefer=PC&sharesource=2402_88491560&sharefrom=from_link
点进去可真是一头雾水没东西就扫一下 看见了一个txt文件和php文件。打开看见一个路径php文件打不开打开是php脚本,分析一下:
error_reporting(0):关闭了错误报告,就是是错的也不会告诉你
class wllm{
public $admin;
public $passwd;这个就是类定义,包含两个公共属性 $admin 和 $passwd
$this->admin ="user";
$this->passwd = "123456";这个就是用户和密码
if($this->admin === "admin" && $this->passwd === "ctf"){
include("flag.php");如果 $admin于"admin"且$passwd等于"ctf",则包含flag.php文件并输出$flag变量的值
$p = $_GET['p'];
unserialize($p); 通过 $_GET['p'] 获取用户输入,并使用 unserialize() 函数对其进行反序列化。
如何运行脚本(这个脚本我还在学,现在用的是大佬的)在线运行一下,得到一个网址 就得到flag
MISC [LitCTF 2023]喜欢我的压缩包么 (初级):
下载准备解压。需要密码 思路一下就清晰了,根据题目提示,6位直接爆破直接解压就得到flag:LitCTF{Do-u-like-my-zip-p4ck?}
CRYPTO [SWPUCTF 2021 新生赛]traditional:
这个题我还在理解
先了解如何解决有八卦的题:
- 理解八卦符号:首先,参赛者需要了解八卦的基本符号和含义,包括阳爻(―)和阴爻(- -)的组合方式以及它们所代表的意义。
- 划分重卦:在题目给出的字符序列中,参赛者需要根据八卦的组成规律(通常是三个爻组成一个卦,但在某些情况下可能是六个爻组成一个重卦)来划分出每个卦。
- 对应卦象和含义:将划分出的卦象与具体的八卦对应起来,并理解每个卦象所代表的含义。这通常需要对易经或相关文化有一定的了解。
- 解密信息:根据卦象的含义和题目中的提示或索引表,将卦象转换为具体的信息或密码,从而解密出flag。
八卦由三个爻组成,每个爻可以是阳爻(―)或阴爻(- -),信息量为8bit。
根据常识,对其编码,“横”表示“1”;“断”表示“0”;000~111共八种表示;
每3个卦为一个字符,共有8个字符;
具体转化过程:用二进制表示——>每9biit转换成一个十进制数字——>ASCII码对应的字符
下载附件打开,也是个逆天了 放入随波逐流,什么都没有得到:
坤:二进制数为000
艮:二进制数为001
坎:二进制数为010
巽:二进制数为011
震:二进制数为100
离:二进制数为101
兑:二进制数为110
乾:二进制数为111
也就是dict = {'乾':'111','巽':'110','离':'101','艮':'100','兑':'011','坎':'010','震':'001','坤':'000'}
利用脚本得到
REVERSE [GFCTF 2021]wordy:
个人理解的花指令:一句话概括就是构造一个恒成立条件跳转,并在中间塞一段乱七八糟的数据
这个题要现先了解花指令:
花指令(Obfuscation)是一种技术,用于混淆代码的逻辑和结构,使逆向分析变得更加困难。花指令的目的通常是保护软件免受恶意分析、破解或篡改。
花指令的常见类型:
- 代码混淆:通过修改代码的结构、变量名、函数名等方式,使代码难以阅读和理解。
- 控制流平坦化:将原本顺序执行的代码转换为复杂的控制流图,增加逆向分析的复杂度。
- 虚假代码插入:在代码中插入无实际功能的虚假指令或操作,干扰逆向分析。
- 加密与解密:对代码或数据进行加密,仅在运行时解密执行,增加分析的难度。
应对花指令的策略:
- 静态分析:使用反编译工具将二进制代码转换为高级语言代码,然后结合代码混淆分析技术尝试还原代码逻辑。
- 动态分析:通过调试器或模拟器运行程序,观察程序的执行流程和内存变化,从而推断代码的真实功能。
- 模式识别:识别和归纳常见的花指令模式,建立知识库,以便在逆向分析过程中快速识别和处理。
- 经验积累:通过不断实践和学习,积累逆向分析的经验和知识,提高应对花指令的能力。
先查壳,64位 点击先查看结果什么都没有,那就直接看mian函数 这里的花指令就是这个shift+F2,输入脚本,运行得到flag :NSSCTF{u_are2wordy}
pwn [NSSCTF 2022 Spring Recruit]R3m4ke?:
先连接尝试,没有 查壳,64位,一打开就看到打开main函数发现gets,典型的栈溢出再查看 写个脚本 运行 ls查看,cat得到flag NSSCTF{0f2baf3d-6963-42a6-a011-3039a5d25cca}