XYCTF pwn部分题解 (部分题目详解)
hello_world(签到)
思路:
这道题就是利用printf函数泄露libc的基地址,然后再次进行栈溢出通过system,/bin/sh来获取shell
wp:

invisible_flag
思路:
题目提示orw,那我们先看看是否开了沙盒

那么是开了沙盒的,试试orw读取flag

虽然保护全开但是程序会执行我们写的shellcdoe那么就可以orw读取flag了
wp:

static_link
思路:
那么这题提示我们是静态编译,对于静态编译的,哪些ret2libc什么的都没法使用了,但是我们可以利用程序现有的函数,比如read,write,mprotect....等等。那么这道题目就可以利用mprotect函数来获取shell,对于这个函数详细的解释,可以看看这篇博客 mprotect静态编译
wp:

guestbook1
思路:通过修改index和name来完成类似于栈迁移的过程,先修改最后一个字节到backdoor,因为我们不知道栈的地址,但是可以通过爆破最后一个字节来完成迁移(有1/16的概率)

wp:

baby_gift
思路:题目给了我们gift函数,但是我发现没有什么实际的作用,但是他提醒了我们要看看rdi(hahaha)

程序是有溢出的,但是没有pop_rdi那一类的gadget

那我们看看反汇编的GetInfo函数,发现了一个不得了的东西

那么就是我们输入栈上的数据被赋值给了rax,rax赋值给了rdi,也就是我们可以,通过输入的数据来控制rdi,那么我输入一个%p后面\x00截断一下,然后返回地址调用printf是不是就可以泄露rsi的地址,我们还要看一下rsi的地址是不是跟libc的地址有关

发现是有关的,那么我们就可以计算出read函数的地址,进而得到libc版本和libc_base
那么接下来就再来一次溢出通过输入/bin/sh控制rdi,然后system就好了
但是值得注意的是我们要把eax清零之后再进行我们的打印和system函数,不然就会出现一系列的问题。

wp:

fmt
思路:题目是格式化字符串类型的题目,而且给了后门函数,还有libc的地址,但是这次没有给我们printf而是scanf,但是本质上是一样的,都可以进行漏洞的利用,因为程序利用exit来退出的,我们可以利用sacnf的%s来进行修改exit_hook为后门函数,关于这个函数具体可以看这个博客 https://www.cnblogs.com/bhxdn/p/14222558.html
wp:

这里踩个坑,我发现直接gdb调试和使用脚本来动态调试,exit_hook的偏移不一样,可能是我输入的东西的区别?.......所有还是以脚本调试的为主吧haha
simple_srop
思路1:本题开了沙盒,所以不能直接sh来进行getshell,可以进行orw读取flag,注意一下偏移即可


思路2:通过mprotect函数执行orw shellcode,当然这个shellcode可以手写也可以使用工具,其实两种思路都是差不多的都要注意偏移
wp:

Intermittent
思路:这个题目限制了我们的shellcode,但是别怕,因为程序会跳到,可执行段上去执行,然后我们输入的数据在栈上,它会四个字节一组赋值给可执行段上,但是不连续,我们可以通过我们输入栈上的数据和它配合来syscall
因为rax要为一个合法地址,所以我们要给rax赋值(它实际上是把rax最低的一个字节加到它本身)

wp:

那先到这里吧(后续我再补上haha)
总结:这次收获很大,比赛不是目的,而是总结提高的一次机会,师傅们都很厉害,大家一起交流,有什么具体的问题可以评论留言,第一时间解答!!
XYCTF pwn部分题解 (部分题目详解)的更多相关文章
- RHCE脚本题目详解
目录 RHCE脚本题目详解 题目一 shell脚本之if语句实现: shell脚本之case语句实现: 题目二 实现 测试 解析 写在后面 RHCE脚本题目详解 题目一 在system1上创建一个名为 ...
- js几个经典的题目详解
直接看题目,先不要急着看答案 先自己思考,收获更多 一 var out = 25, inner = { out: 20, func: function () { var out = 30; retur ...
- POJ-2590-Steps题目详解,思路分析及代码,规律题,重要的是找到规律~~
Steps Time Limit: 1000MS Memory Limit: 65536K http://poj.org/problem?id=2590 Description One ...
- LeetCode 873. 最长的斐波那契子序列的长度 题目详解
题目详情 如果序列 X_1, X_2, ..., X_n 满足下列条件,就说它是 斐波那契式 的: n >= 3 对于所有 i + 2 <= n,都有 X_i + X_{i+1} = X_ ...
- 338. Counting Bits题目详解
题目详情 Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate ...
- day23作业详解
1.题目 2.题目详解 点击查看详细内容 1. 1-1 封装 把功能封装到类中 class Message(object): def email(self):pass def msg(self):pa ...
- day13列表推导式作业详解
1.day13题目 2,用列表推导式做下列小题 (1)过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 (2)求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表 (3)求M ...
- day10函数作业详解
1.day10题目 2,写函数,接收n个数字,求这些参数数字的和.(动态传参) 3,读代码,回答:代码中,打印出来的值a,b,c分别是什么?为什么? a=10 b=20 def test5(a,b): ...
- day9函数作业详解
1.day9题目 1,整理函数相关知识点,写博客. 2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. 3,写函数,判断用户传入的对象(字符串.列表.元组 ...
- day8文件操作作业详解
1.day8题目 1,有如下文件,a1.txt,里面的内容为: 老男孩是最好的培训机构, 全心全意为学生服务, 只为学生未来,不为牟利. 我说的都是真的.哈哈 分别完成以下的功能: a,将原文件全部读 ...
随机推荐
- how to install local jar to maven repository
如何把maven不能引入的依赖安装到本地Repository: 1.比如fastdfs-client-java. <dependency> <groupId>org.csour ...
- Python 基于 xlsxwriter 实现百万数据导出 excel
追加导出 + 自动切换 sheet ️ excel 中的每个 sheet 最多只能保存 1048576 行数据 # 获取项目的根路径 rootPath curPath = os.path.abspat ...
- 才储性格测试(INTJ 专家型——追求能力与独立)
INTJ 专家型--追求能力与独立 一.你的荣格理论图形 二.基本描述 才储分析:您的性格类型倾向为" INTJ "(内向 直觉 思维 判断 倾向度: I60 N56 T74 J5 ...
- https安全性 带给im 消息加密的启发
大家好,我是蓝胖子,在之前# MYSQL 是如何保证binlog 和redo log同时提交的?这篇文章里,我们可以从mysql的设计中学会如何让两个服务的调用逻辑达到最终一致性,这也是分布式事务实现 ...
- LeetCode 416. 分割等和子集(bitset优化)
LeetCode 416. 分割等和子集 1 题目描述 给你一个只包含正整数的非空数组nums.请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 1.1 输入测试 示例 1: 输入 ...
- #dp#CodeChef Little Elephant and Mouses
LEMOUSE 分析 由于被单只老鼠吓到只能算一次,所以前两次走的位置也可能会被老鼠吓到. 设 \(dp[n][m][o][p]\) 表示走到 \((n,m)\) 上一步走的是 \(o\) 这种方式, ...
- Native API在HarmonyOS应用工程中的使用指导
HarmonyOS的应用必须用js来桥接native.需要使用ace_napi仓中提供的napi接口来处理js交互.napi提供的接口名与三方Node.js一致,目前支持部分接口,符号表见ace_ ...
- HarmonyOS应用侧与前端页面数据通道建立
一. 应用侧调用前端页面函数 应用侧可以通过runJavaScript()方法调用前端页面的JavaScript相关函数.在下面的示例中,点击应用侧的"runJavaScript" ...
- springboot多模块项目启动经历
springboot多模块使用 @ 目录 springboot多模块使用 前言 大佬把项目权限给我了,我就先下下来看看学习一下 一.识别 二.maven配置 1.安装maven 三.加载刷新 总结 前 ...
- Java学生信息管理系统源码
学生信息管理系统 功能说明 学生信息管理,包括学生.班级.院系.课程.成绩等的管理. 本程序仅供学习食用. 工程环境 JDK IntelliJ IDEA MySQL 运行说明 1.安装JDK. 2.导 ...