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试题分析的更多相关文章

  1. ZCTF2015 pwn试题分析

    ZCTF的pwn赛题分析, PWN100 这道题与SCTF的pwn100玩法是一样的,区别在于这个要过前面的几个限制条件.不能触发exit(0).否则就不能实现溢出了. 依然是触发canary来lea ...

  2. SCTF 2014 pwn题目分析

    因为最近要去做ctf比赛的这一块所以就针对性的分析一下近些年的各大比赛的PWN题目.主防项目目前先搁置起来了,等比赛打完再去搞吧. 这次分析的是去年的SCTF的赛题,是我的学长们出的题,个人感觉还是很 ...

  3. RCTF2015 pwn试题分析

    pwn200 漏洞给的很明显,先是读到了main的局部数组中,然后在子函数中向子函数的局部数组栈里复制. 总体思路是leak system的地址,然后再向一个固定地址写入/bin/sh,最后执行sys ...

  4. 使用java理解程序逻辑 试题分析

      1.编译Java Applet源程序文件产生的字节码文件的扩展名为() A:.java B..class C:Html D:Exe 正确答案:B 试题分析: 本题考查的是Java程序的开发过程.J ...

  5. 从一道面试题分析javascript闭包

    据说是一不注意就会做错的五道javascript面试题之一,我们来看看这道题长什么样 function Container( properties ) { var objthis = this; fo ...

  6. java android面试题分析总结

    本文参考多处,一并感谢! http://www.blogjava.net/fanyingjie/archive/2007/06/27/126467.aspx http://baike.baidu.co ...

  7. MySQL高级知识(七)——索引面试题分析

    前言:该篇随笔通过一些案例,对索引相关的面试题进行分析. 0.准备 #1.创建test表(测试表). drop table if exists test; create table test( id ...

  8. 某大型企业ospf面试题分析(含路由策略和路由过滤,及双点双向重发布)

    面试问题背景 本面试题来自国内最大通信技术公司之一,央企,有很多金融网项目. 了解行业的同学,一定知道事哪个企业. 上面试问题(取自百哥收集整理的面试总结大全,关注百哥CSDN或知乎,不定期分享名企面 ...

  9. Python求解进制问题(阿里巴巴2015笔试题)

    问题描述:用十进制计算30的阶乘,然后把结果转换成三进制表示,那么该进制表示的结果末尾会有多少个连续0?解析:作为笔试题的话,要想按照题意先把阶乘结果计算出来再转换成三进制最后再数0的个数,时间肯定来 ...

随机推荐

  1. nginx启用stream日志配置文件

    主配置文件/etc/nginx/nginx.conf增加内容: stream { log_format proxy '$remote_addr [$time_local] ' '$protocol $ ...

  2. python基础之字符串格式化

    python中字符串格式化有两种,一种是%,另一种是str中的format()功能. % 列举格式符 %s    字符串 %c    单个字符 %b    二进制整数 %d    十进制整数 %i   ...

  3. python基础之01数据类型-变量-运算浅解

    python的数据类型 1  数字 数字分为整型(int),长整型(long),浮点型(float),复数(complex) 整型较为常用的功能: >>> a=-4 >> ...

  4. Django templates and models

    models templates models and databases models 如何理解models A model is the single, definitive source of ...

  5. GO_05_2:Golang 中 panic、recover、defer 的用法

     函数 defer 1. 它的执行方式类似其他语言中的折构函数,在函数体执行结束后按照调用顺序的 相反顺序 逐个执行 2. 即使函数发生 严重错误 也会被执行,类似于 java 中 try{...} ...

  6. python 中的os模块

    python os模块   Python os 模块提供了一个统一的操作系统接口函数 一.对于系统的操作 1.os.name 当前使用平台 其中 ‘nt’ 是 windows,’posix’ 是lin ...

  7. day6 方法

    1.方法是一段可重复调用的代码段,今天学习的方法可以由主方法直接调用,所以加入public static关键字修饰. 2.方法的重载为方法名相同,参数的类型或个数不同.

  8. Python中的变量引用对象需注意的几点

    Python中的变量引用对象需注意的几点 分类:Python (55)  (0) 普通引用: Python中,变量的作用仅仅是一个标识,只有赋值后才被创建,它可以引用任何类型的对象,而且在引用之前必须 ...

  9. Java并发编程原理与实战三十六:阻塞队列&消息队列

    一.阻塞队列 1.阻塞队列BlockingQueue ---->可以理解成生产者消费者的模式---->消费者要等待到生产者生产出来产品.---->而非阻塞队列ConcurrentLi ...

  10. spring-mvc Mybatis插件打印SQL

    代码: package com.chainup.exchange.service.adapter; import com.chainup.exchange.service.impl.AccountSe ...