记一次院赛CTF的Pwn和Misc题(入门)
目录
- Pwn
- easy pwn
- 莽撞人
- 反向读取
- Misc
- drop the beats
- 拼东东
- 消失的50px
Pwn
见到别的比赛的pwn题才幡然醒悟,已经没有比这些更简单的pwn题了。
easy pwn
首先,拿到Pwn题的第一步,看是64位还是32位
第二步 gdb看开了哪些保护
【1】Canary:Canary保护机制的原理,是在一个函数入口处从fs段内获取一个随机值,一般存到EBP - 0x4(32位)或RBP - 0x8(64位)的位置。如果攻击者利用栈溢出修改到了这个值,导致该值与存入的值不一致,__stack_chk_fail函数将抛出异常并退出程序。Canary最高字节一般是\x00,防止由于其他漏洞产生的Canary泄露
【2】FORTIFY:FORTIFY_SOURCE机制对格式化字符串有两个限制(1)包含%n的格式化字符串不能位于程序内存中的可写地址。(2)当使用位置参数时,必须使用范围内的所有参数。所以如果要使用%7$x,你必须同时使用1,2,3,4,5和6。
【3】NX:NX enabled如果这个保护开启就是意味着栈中数据没有执行权限,以前的经常用的call esp或者jmp esp的方法就不能使用,但是可以利用rop这种方法绕过
【4】PIE:PIE enabled如果程序开启这个地址随机化选项就意味着程序每次运行的时候地址都会变化,而如果没有开PIE的话那么No PIE (0x400000),括号内的数据就是程序的基地址
【5】RELRO:RELRO会有Partial RELRO和FULL RELRO,如果开启FULL RELRO,意味着我们无法修改got表
第三步,拖入ida反汇编
可以看到本题只需要让v5等于2019便可以执行sh了。
然后看一下他的栈结构,这边var_4便是v5(双击v5就可以跳到var_4)
因为read(0,&buf,0xC)可以知道,我们可以输入11位字符,所以我们只需要让最后四位是2019,就可以覆盖到var_4,也就是可以令v5等于2019.
于是写出exp
这边payload的\n加不加其实是一样的,加了\n表示就是结束输入。
exp里面主要是
导入pwn
连接到服务器
构建payload
发送payload
最后这个这题是一样的,因为不需要获取的shell,就是不需要获取控制权,他的意思就是把控制权交给用户。本题是当你执行到就直接给你flag的,不会给你控制权
莽撞人
首先一波常规操作,找到漏洞点,发现buf是0x10位的空间,但是可以输入0x50的内容
可以发现,这边有一个函数是getShell,只要执行到这个函数,就执行systm(“/bin/sh”)
栈结构为junk+ebp+ret_address+参数1+参数2+……+参数n
于是我们只需要将read到buf中的数据,覆盖到ret_address为getShell()地址。
反向读取
这边比较关键的是要发现漏洞点,因为要让if(*((_BYTE )&v2+i)==((_BYTE *)&v8+s[i]))一直都是成立的。
可以发现,当char类型的大于127会变成负数,所以我们可以利用这一点让他们相等。
通过分析,可以发现v2和v8相差0x40也就是64,所以*(&v2)=*(&v8-64)
构建exp如下,这边192就是-64
然后,就得到了flag
Misc
drop the beats
这是一道音频的杂项题,因为比较简单,所以这种简单的音频题我知道的一般就是一个mp3隐写,要么就是拖入Audacity频谱分析了
拼东东
一个损坏的zip,第一步就是想到拖到winhex里面看下文件头,发现没有zip的文件头50 4B 03 04,加上后就可以正常打开了。
消失的50px
这题很明显就是一个改图片高度的题了,拖入winhex找需要修改的高度。
可以看到图片高度是350像素,转换成16进制就是015E
然后找到015E,把他改大一些就好了。
记一次院赛CTF的Pwn和Misc题(入门)相关推荐
- 记一次院赛CTF的Crypto和Re题(入门)
目录 Crypto easy crypto bAcOn 敌军密报 Re easy re 跳到对的地方 简单的XOR 多密码表替换 Crypto easy crypto 首先,这个可以很容易的看出这是一 ...
- 记一次院赛CTF的WEB题(入门级别)
目录 签到一 签到二 口算小天才 easy php 录取查询 我爱python Spring 这次院赛的题目比较基础,适合给刚入门CTF的小白提供一个大致CTF解题思路.(主要因为本人小白,表示能学到 ...
- 某新生院赛CTF 移动题writeup
题目提供了一个apk,常规考察内容一般为逆向.挖洞~ 1.程序初步分析 获取一个apk后第一件事情肯定是运行,看看题目到底是要干嘛,是要逆向分析算法,还是利用一些Androd机制.截图如下: 程序只有 ...
- 2017哈理工 低年级组院赛初赛 G-做游戏 【水题】
题目描述 今天是Tabris和mengxiang000来到幼儿园的第9天. 为了庆祝这美好的一天,老师组织同学们做游戏,拿来了好多骰子. 游戏规则: 1)两个人每人轮流掷骰子,操控同一个小人在一个有向 ...
- CTF比赛PWN题sgtlibc通用快速解题框架
CTF比赛PWN题sgtlibc通用快速解题框架 安装 开源地址:https://github.com/serfend/sgtlibc 使用 pip install sgtlibc -U 安装pwn解 ...
- [BUUCTF-pwn]——[第六章 CTF之PWN章]stack
[BUUCTF-pwn]--[第六章 CTF之PWN章]stack 题目地址: https://buuoj.cn/challenges#[%E7%AC%AC%E5%85%AD%E7%AB%A0%20C ...
- 记2015沈阳区域赛
前记 基本确定了要去沈阳和上海打区域赛,听说苏大cp也会沈阳,于是我们的最终目标变为了压苏大. 周五 下午一点左右的飞机,本来想要早上赶概率论作业然后交到学校去,结果睡晚了,干脆就早点去了机场,然后大 ...
- ZUFE 2017院赛 - Problem K: Jelly与狗头人的地下世界 (DP)
一个简单的DP. 只能往下和往右传递. 对DP不够敏感,打院赛的时候用记忆化搜索过的,浪费不少时间. #include <iostream> #include <stdio.h> ...
- CSAW CTF 2016 PWN quals-warmup
CSAW CTF 2016 PWN quals-warmup 原文链接 先对文件有个大致的了解,是64位ELF文件 ☁ csaw ctf 2016 quals-warmup ls exp.py fla ...
最新文章
- CVPR 2022 | 华南理工提出VISTA:双跨视角空间注意力机制实现3D目标检测SOTA,即插即用...
- 快速小目标检测--Feature-Fused SSD: Fast Detection for Small Objects
- 【UWP】使用 Rx 改善 AutoSuggestBox
- Java的四种引用,强弱软虚,用到的场景
- android base64解密,android Base64 AES加密解密
- 《研磨设计模式》chap22 装饰模式Decorator(1)模式简介
- 静态call 动态call LINK
- 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换...
- 200908阶段一C++多态
- ubuntu php 树莓派,树莓派3 安装ROS环境(ubuntu mate 16.04+kinetic)
- 旅游系统_数字洛江智慧旅游系统助力提升旅游安全水平
- Android开发之自定义的ProgressDialog
- C语言遇空字符缩进,c语言代码缩进和空白
- python神器pandas_Python中的神器Pandas,但是有人说Pandas慢...
- Thread 实现多线程同步下载网络图片(Java)
- 老李推荐:第8章2节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-解析处理命令行参数...
- better-scroll使用的坑与心得
- 货物与产品的区别_商品与产物的区别
- 配置alexa skill(二)
- Linux多进程间通信——管道通信实现
热门文章
- python pandas dataframe 转json_python-将嵌套的json转换为pandas dataframe
- mysql union all sum_[数据库]SQL Server UNION ALL 结果 SUM函数造成精度丢失
- 加速DeiT-S 60%+吞吐量!腾讯优图提出高性能Transformer加速方法
- 多源迁移学习相关研究回顾
- BN究竟起了什么作用?一个闭门造车的分析
- 免费课程 | 云脑机器学习实战训练营,中美大咖携手带你飞!
- 东南大学周张泉:基于知识图谱的推理技术 | 实录·Guru Talk
- 【Java基础】一篇文章读懂多线程
- win10中微软账户中文名称修改后本地用户文件夹仍为中文名
- java常用算法_JAVA编程常用算法——冒泡排序