SCTF 2015 pwn试题分析
Re1
是一个简单的字符串加密。程序使用了多个线程,然后进行同步。等加密线程加密好了之后才会启动验证线程。这个题比较坑的是IDA F5出来的结果不对,不知道是不是混淆机制。
刚开始看的是F5后的伪代码,一脸懵逼。后来看了下汇编才明白是怎么回事。
解密直接打表就可以,也可以写逆算法。
pwn1
用checksec看了一下保护机制,有canary+nx保护。漏洞是一个简单的栈溢出,但是没有办法劫持程序的流程。
因为flag已经被读到了内存中了,所以就想到去leak出来。后来知道有一种ssp leak的玩法,就是故意触发canary保护,
而这个保护机制会输出argv[]中的程序名,由于栈中argv[]是系统调用主函数的参数,栈帧肯定在当前的高地址处,所以在栈中一定可以覆盖的到。
于是就可以去覆盖了。exp的构造是exp=junk+flag的指针。
pwn2
这道题开始时懵逼了一下,因为格式化字串漏洞之前接触的都是格式化串储存在栈里的。而这道题的格式化串是储存在bss段里的。格式化字串漏洞是要想向任意地址写,而格式化串不在栈里地址就没法指定了,这样就很尴尬了。
后来想到可以先向栈里写入一个要写入的地址,相当于构造一个跳板。但是这样做的前提是栈里得有一个指向栈中的指针,调试起来一看,还真的有这样的指针。
于是就可以构造了。
因为读完之后马上就会调用fflush(),所以这里我就直接写入got表了。而system函数题中已经提供了,连参数都已经push好了。直接把地址盖过去就可以了。
两个格式字符串是
"%134525283x%4$n"
"%134520973x%12$n"
SCTF 2015 pwn试题分析的更多相关文章
- ZCTF2015 pwn试题分析
ZCTF的pwn赛题分析, PWN100 这道题与SCTF的pwn100玩法是一样的,区别在于这个要过前面的几个限制条件.不能触发exit(0).否则就不能实现溢出了. 依然是触发canary来lea ...
- SCTF 2014 pwn题目分析
因为最近要去做ctf比赛的这一块所以就针对性的分析一下近些年的各大比赛的PWN题目.主防项目目前先搁置起来了,等比赛打完再去搞吧. 这次分析的是去年的SCTF的赛题,是我的学长们出的题,个人感觉还是很 ...
- RCTF2015 pwn试题分析
pwn200 漏洞给的很明显,先是读到了main的局部数组中,然后在子函数中向子函数的局部数组栈里复制. 总体思路是leak system的地址,然后再向一个固定地址写入/bin/sh,最后执行sys ...
- 使用java理解程序逻辑 试题分析
1.编译Java Applet源程序文件产生的字节码文件的扩展名为() A:.java B..class C:Html D:Exe 正确答案:B 试题分析: 本题考查的是Java程序的开发过程.J ...
- 从一道面试题分析javascript闭包
据说是一不注意就会做错的五道javascript面试题之一,我们来看看这道题长什么样 function Container( properties ) { var objthis = this; fo ...
- java android面试题分析总结
本文参考多处,一并感谢! http://www.blogjava.net/fanyingjie/archive/2007/06/27/126467.aspx http://baike.baidu.co ...
- MySQL高级知识(七)——索引面试题分析
前言:该篇随笔通过一些案例,对索引相关的面试题进行分析. 0.准备 #1.创建test表(测试表). drop table if exists test; create table test( id ...
- 某大型企业ospf面试题分析(含路由策略和路由过滤,及双点双向重发布)
面试问题背景 本面试题来自国内最大通信技术公司之一,央企,有很多金融网项目. 了解行业的同学,一定知道事哪个企业. 上面试问题(取自百哥收集整理的面试总结大全,关注百哥CSDN或知乎,不定期分享名企面 ...
- Python求解进制问题(阿里巴巴2015笔试题)
问题描述:用十进制计算30的阶乘,然后把结果转换成三进制表示,那么该进制表示的结果末尾会有多少个连续0?解析:作为笔试题的话,要想按照题意先把阶乘结果计算出来再转换成三进制最后再数0的个数,时间肯定来 ...
随机推荐
- nginx启用stream日志配置文件
主配置文件/etc/nginx/nginx.conf增加内容: stream { log_format proxy '$remote_addr [$time_local] ' '$protocol $ ...
- python基础之字符串格式化
python中字符串格式化有两种,一种是%,另一种是str中的format()功能. % 列举格式符 %s 字符串 %c 单个字符 %b 二进制整数 %d 十进制整数 %i ...
- python基础之01数据类型-变量-运算浅解
python的数据类型 1 数字 数字分为整型(int),长整型(long),浮点型(float),复数(complex) 整型较为常用的功能: >>> a=-4 >> ...
- Django templates and models
models templates models and databases models 如何理解models A model is the single, definitive source of ...
- GO_05_2:Golang 中 panic、recover、defer 的用法
函数 defer 1. 它的执行方式类似其他语言中的折构函数,在函数体执行结束后按照调用顺序的 相反顺序 逐个执行 2. 即使函数发生 严重错误 也会被执行,类似于 java 中 try{...} ...
- python 中的os模块
python os模块 Python os 模块提供了一个统一的操作系统接口函数 一.对于系统的操作 1.os.name 当前使用平台 其中 ‘nt’ 是 windows,’posix’ 是lin ...
- day6 方法
1.方法是一段可重复调用的代码段,今天学习的方法可以由主方法直接调用,所以加入public static关键字修饰. 2.方法的重载为方法名相同,参数的类型或个数不同.
- Python中的变量引用对象需注意的几点
Python中的变量引用对象需注意的几点 分类:Python (55) (0) 普通引用: Python中,变量的作用仅仅是一个标识,只有赋值后才被创建,它可以引用任何类型的对象,而且在引用之前必须 ...
- Java并发编程原理与实战三十六:阻塞队列&消息队列
一.阻塞队列 1.阻塞队列BlockingQueue ---->可以理解成生产者消费者的模式---->消费者要等待到生产者生产出来产品.---->而非阻塞队列ConcurrentLi ...
- spring-mvc Mybatis插件打印SQL
代码: package com.chainup.exchange.service.adapter; import com.chainup.exchange.service.impl.AccountSe ...