0ctf-pwn_warmup-re_mips4

Warmup(2)

程序很小,读写操作直接通过int 80h系统调用完成。栈溢出漏洞很明显,能溢出20字节。提示由于沙盒的保护只能来读取/home/warmup/flag文件。那么思路就很清楚了,打开flag文件,读取flag文件到内存,写内存到标准输出。现在遇到了第一个问题,打开文件的系统调用是5,系统调用号要放在eax中,如何得到这个系统调用号以及如何得到后要立马执行系统调用打开文件,读文件到内存。

最初想的是sys_read会返回读取的字节数,sys_write会返回写的字节数,我们可以控制读写的字节数为5那么读写返回后eax就是5了,这个时候立马返回去读文件,但是发现并不能,栈的结构不对。

最后查了下alarm的返回值,发现如果连续两次调用alarm的话,第二次alarm返回第一次订的闹钟剩余的时间,因为程序执行时间很短,如果第一次alarm(5)的话,第二次alarm返回值将是5,成功得到系统调用号。这个时候就可以打开文件,并能控制返回地址到程序的开始,这样再溢出一次能读到flag,再最后一次溢出能写flag到标准输出,就能得到flag了。

Trace(4)

一道mips的逆向题,给的tracelog,刚开始没仔细看汇编,一直想办法模拟执行这些代码,也尝试去查了查Unicorn使用方法,感觉很强大,但是并没有用,感觉Unicorn更像是给了shellcode后模拟执行shellcode的。

一直想知道这个tracelog使用什么生成的,看着别扭(像是intel风格的汇编),谁能告诉我?虽然没接触过mips汇编,但是查了下函数调用约定,就是想看看各个寄存器的作用,以及函数prologue和epilogue的样子,拿着一份mips指令集手册就开始分析代码,看了大概1000多行(其实很快因为大段的在循环),看到代码里面有重复调用一个函数,就决定根据函数prologue和epilogue的样子来分析下这里面总共有多少函数,每个函数的地址空间,每个函数调用了多少次。分析结果发现:2万多行的代码里,总共有3个函数,其中一个函数递归调用了131次。

地址空间0x004007d0-0x0040084c是一个函数总共调用了一次,作用是初始化内存,形成a-zA-Z0-9{}flag连续内存;地址空间0x00400858-0x004009c8是一个函数调用了131次,而且是在递归调用,分析后是在对前面形成的内存中的字符进行了排序;地址空间

0x00400770-0x004007c4是一个函数,是strlen()的实现,调用了三次。

在分析完0x00400858-0x004009c8是在递归地对内存字符中进行递归排序后,就打算根据tracelog模拟整个排序过程,模拟完的结果:

在里面‘f1‘代表flag的第一位,‘f2‘代表flag的第二位,一次类推。其实这个时候已经李最后的flag已经很近了,在主函数的最后,判断了排序好的各个字节之间的关系,我也模拟了一遍。

这下好了,就能确定每一个字节的内容了,flag就是:0ctf{tr135m1k5l96551s9l5r}

代码太丑,就不贴了。

附:

Mips指令集参考:http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

Mips寄存器:

Mips Prologue and epilogue

时间: 2024-10-05 10:25:48

0ctf-pwn_warmup-re_mips4的相关文章

0ops CTF/0CTF writeup

0×00 0CTF『第一届0ops信息安全技术挑战赛,即0ops Capture The Flag,以下简称0CTF. 0CTF由上海交通大学网络信息中心和上海市信息安全行业协会指导,由上海交通大学信息网络安全协会承办,是2014信息安全技能竞赛校园赛首站.0CTF注册与参赛地址为http://ctf.0ops.net. 比赛时间为北京时间2014年3月1日至2日,每天7时至23时,共32小时.』 看官方微博,这个比赛本来是面向上交校内的,就是校外可以做题但是不发奖,后来也给校外发奖了,整体感觉

0CTF 2017 部分Web的某些不一样的思路

洒家参加了0CTF 2017,做了一些题目.赛后过了好几天,看网上已经有了一些写得不错的Writeup,这里就写一写洒家的一些不一样的思路. 一些不错的Writeup https://ctftime.org/event/402/tasks/ http://www.melodia.pw/?p=889 http://lorexxar.cn/2017/03/21/0ctf2017-web/ Temmo's Tiny Shop 洒家看网上的Writeup 在拿到Hint,知道flag的表名后爆破flag

刷题记录:[0CTF 2016]piapiapia(欠)

目录 刷题记录:[0CTF 2016]piapiapia 刷题记录:[0CTF 2016]piapiapia 今天可能要欠着了 原文地址:https://www.cnblogs.com/20175211lyz/p/11444134.html

# [0CTF 2016]piapiapia解题详细思路及复现

[0CTF 2016]piapiapia解题详细思路及复现 题目链接 https://buuoj.cn/challenges#[0CTF%202016]piapiapia 1. 知识点 信息泄露 参数传递数组绕过字符串检测 反序列化字符逃逸 2. 开始复现 2.1 初探题目 开打题目连接我们可以看到是一个登录页面 不知道为啥我一看到登录页面就想SQL注入一波,我还是太年轻了.这道题没有给出提示,SQL注入也不是没有可能,尝试一波之后放弃了,CTF直接登录框就注入的还是不多. 注册账号 看来我们还

0ctf 2017 kernel pwn knote write up

UAF due to using hlist_add_behind() without checking. There is a pair locker(mutex_lock) at delete_note(), but isn’t at edit_note_time(). And it doesn’t check the flag before hlist_add_behind() in insert_note(). for(;;) { /* add before a larger epoch

SQL 注入 OrderBy/0ctf simplesqlin

https://www.cnblogs.com/claricre/p/6187672.html http://www.w3school.com.cn/sql/sql_orderby.asp 1.  select 字段列表/* from 表名 where 条件 order by 字段名1 asc/desc, 字段名2 asc/desc,....... 2.  select 字段列表/* from 表名 where 条件 order by 字段序号 asc/desc, 字段序号 asc/desc,.

[0CTF 2016]piapiapia

很有意思的一道题 访问页面之后是登录界面 尝试弱口令登录一下,无果 查看源代码之后也没有什么提示,扫描敏感目录,发现有源码泄露. 这里我用御剑没有扫出来源码泄露,可能跟扫描线程太快了有关,查看www.zip里面泄露的源代码 class.php里面定义了user和mysql两个类 config.php里面是服务器搭建环境的时候设置的参数,如果读者有自己本地搭建环境的经验就会知道,我们下载下来源码之后,还需要根据自己本地的环境进行相应的配置,比如说我们需要在config.php里面设置自己本地数据库

CTF中那些脑洞大开的编码和加密

0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到类似这样的问题:表哥,你知道这是什么加密吗?其实CTF中脑洞密码题(非现代加密方式)一般都是各种古典密码的变形,一般出题者会对密文进行一些处理,但是会给留一些线索,所以写此文的目的是想给小伙伴做题时给一些参考,当然常在CTF里出现的编码也可以了解一下.本来是想尽快写出参考的文章,无奈期间被各种事情耽搁导致文章断断续续写了2个月,文章肯定有许多没有提及到,欢迎小伙伴补充,总之,希望对小伙伴们有帮助吧! 0x01 目录 1 2 3

[逆向][writeup]0ctf2015 r0ops

这道逆向题相对其分值来说,实在是太难了,想要逆向这个程序,需要足够的耐心,而且还需要有一定的数学知识. 这是一个64位的ELF程序.首先用IDA进行分析,开始部分的逻辑是比较简单的: 1 void *__usercall [email protected]<rax>(__int64 [email protected]<rbp>) 2 { 3 *(_DWORD *)(a1 - 4) = accept(3, 0LL, 0LL); 4 recv(*(_DWORD *)(a1 - 4),

CTF入门指南

转自http://www.cnblogs.com/christychang/p/6032532.html ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: Web密码学pwn 程序的逻辑分析,漏洞利用windows.linux.小型机等misc 杂项,隐写,数据还原,脑洞.社会工程.与信息安全相关的大数据reverse 逆向windows.linux类ppc 编程类的 国内外著名比赛 国外:国内:xctf联赛 0ctf上海国内外都有,很强 入门需要哪些基础