
Jarvis OJ pwn题目 wp
dittozzz
这个作者很懒,什么都没留下…
展开
-
Jarvis oj tell me something writeup
拿到题目前checksec下: 64位,开启了NX。 放到IDA里看下: 就单纯的栈溢出,看下调用哪些函数: plt表里并没有system函数,也不知道对方使用的动态库的版本。 看到函数good_game: 这个函数会读取flag,那么就很显然了,将返回地址覆盖到这个函数即可。 计算下溢出点: 由于是64位的程序,不能访问大于0x00007fffffffffff的地址空间。 但是可以通...原创 2018-12-31 11:41:24 · 286 阅读 · 0 评论 -
Jarvis oj level2 wp
检查防护 开启了NX,没开启PIE和canary防护,程序本身的基址不变。 放IDA里看一下 程序本身调用了system函数,那么PLT表里就一定有这个函数。 看下vulner函数 很显然栈溢出。 IDA查找下字符串: 发现了/bin/sh字符串,而且在本身程序的data段,由于没有开启PIE,那么这个字符串的首地址是不会变的。 简单计算下,首地址是0x0804A024, 算下溢出点是多...原创 2018-12-30 20:25:43 · 1243 阅读 · 3 评论 -
Jarvis oj level1 wp
看下防护 啥也没开。 放IDA里看下: 很显然,利用泄露的数组的首地址来写通解,就不用管ASLR了。 exp如下: from pwn import* a=remote("pwn2.jarvisoj.com","9877") a.recvuntil("What's this:") addr=a.recvuntil(&原创 2018-12-30 19:55:08 · 329 阅读 · 0 评论 -
Jarvis oj level0 wp
这题就是返回利用自身代码。 拿到题目首先检查有什么防护 开启了NX保护,没开canary和PIE,本身程序基址不会变。 放到 IDA里看一下: main函数如下: 调用了 vulner函数: 简单的栈溢出漏洞 这里看到有callsystem这个函数,那就很明显了,将返回地址覆盖为callsystem函数的地址即可。 计算下溢出点: 由于是64位的,不能访问超过0x00007fffffff...原创 2018-12-30 19:44:41 · 450 阅读 · 0 评论 -
Jarvis oj level2 (x64) wp
64位程序前6个参数通过寄存器来传递,多于6个的使用堆栈传递。前6个从左到右依次为RDI,RSI,RDX,RCX,R8,R9。多于六个的从右往左依次压入堆栈 拿到题目检查保护: 放ida里,还是之前一样的程序: 程序本身有字符串/bin/sh 找下pop rdi ret 在哪: 编写exp: from pwn import* a=remote("pwn2.jarvisoj.com",...原创 2019-01-05 14:22:26 · 324 阅读 · 0 评论 -
jarvisoj level4 wp ROP及DynELF模块
拿到题目 开启了NX。 放IDA里: 栈溢出。 程序本身没有调用system函数 无法ret2plt。 且题目本身没有给出目标的动态库的版本。题目本身有write函数,可以泄露内存,则可以利用pwntools的DynELF模块,找到system函数。 本身程序段没有/bin/sh的字符串,则需要使用read函数将字符串读入,read函数有三个参数,这就需要pop pop pop ret这...原创 2018-12-31 21:27:35 · 585 阅读 · 0 评论 -
jarvis oj fm writeup
格式化字符串漏洞简单利用 32位程序。 canary和nx都打开了。 放ida里: 直接打印的buf,很明显的格式化字符串漏洞。 用%n,将其修改为4即可,exp如下: from pwn import* a=remote("pwn2.jarvisoj.com","9895") payload=p32(0x0804A02C)+"%11$n" a.sendline(payload) a....原创 2019-01-05 19:39:18 · 369 阅读 · 2 评论 -
Jarvis oj Test your Memory writeup
简单的ret2plt 检查下防护,只开了NX。 放ida里: 问题出在mem_test函数里: 点开hint,发现了有"cat flag"这个字符串: 而且还在rodata区里,那直接硬编码就可以了。 程序本身调用了system函数,那直接ret2plt就行了。 根据ida计算出溢出点: 溢出点0x13+4。 编写exp: from pwn import* a=remote("p...原创 2019-01-05 20:49:35 · 907 阅读 · 0 评论