![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
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 · 257 阅读 · 0 评论 -
Jarvis oj level2 wp
检查防护开启了NX,没开启PIE和canary防护,程序本身的基址不变。放IDA里看一下程序本身调用了system函数,那么PLT表里就一定有这个函数。看下vulner函数很显然栈溢出。IDA查找下字符串:发现了/bin/sh字符串,而且在本身程序的data段,由于没有开启PIE,那么这个字符串的首地址是不会变的。简单计算下,首地址是0x0804A024,算下溢出点是多...原创 2018-12-30 20:25:43 · 1165 阅读 · 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 · 290 阅读 · 0 评论 -
Jarvis oj level0 wp
这题就是返回利用自身代码。拿到题目首先检查有什么防护开启了NX保护,没开canary和PIE,本身程序基址不会变。放到 IDA里看一下:main函数如下:调用了 vulner函数:简单的栈溢出漏洞这里看到有callsystem这个函数,那就很明显了,将返回地址覆盖为callsystem函数的地址即可。计算下溢出点:由于是64位的,不能访问超过0x00007fffffff...原创 2018-12-30 19:44:41 · 376 阅读 · 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 · 270 阅读 · 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 · 509 阅读 · 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 · 328 阅读 · 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 · 862 阅读 · 0 评论