SCTF 2015 pwn试题分析
2016-05-11 22:46
169 查看
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"
是一个简单的字符串加密。程序使用了多个线程,然后进行同步。等加密线程加密好了之后才会启动验证线程。这个题比较坑的是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"
相关文章推荐
- WinForm设置控件焦点focus
- Alluxio1.0.1最新版(Tachyon为其前身)介绍,+HDFS分布式环境搭建
- 软件工程_东师站_第十周作业
- requests模块--python发送http请求
- Web服务启动时自动加载Servlet,并执行service处理
- 引用计数器
- HADOOP监控
- Git 实用命令总结
- 空气测试仪“清心”(2)-整体架构
- HDU 5259 弹吉他
- Flink安装
- 切换存储文件 (翻译)
- ASP.NET后台为移动端提供接口
- android Model对象转换方法,两个实体类对象赋值简便方法
- HADOOP监控
- Android高级UI-listView的原理及优化
- OpenJudge 7624 山区建小学
- HDU--2037今年暑假不AC
- OpenJudge 7624 山区建小学
- 126.Partition List