PWN
  • 2024-07-03pwn_wp汇总
    目录pwnwriteup记录1.BUUhitcon_2018_children_tcache(offbynone,free_hook)Ulink学习BUU_hitcon2014_stkof原理介绍BUU_hitcon2014_stkof2.buu护网杯_2018_gettingstart3.buuciscn_2019_en_3(puts函数漏洞,uaf)4.buugyctf_2020_some_thing_exceting(2.23doublefree)5.NSSCTF
  • 2024-07-02【介绍下Pwn,什么是Pwn?】
  • 2024-07-02zip-zip(子函数调用)
    题目监听服务器端口,得到题目如下:源码解析主函数主函数中是题目界面的逻辑,对应于用户的选择做出相应的操作,其中需要注意的是选项2,解压操作需要获得root权限(uid==0).选项1,2:文件压缩和解压缩,是常规的文件压缩代码,不做解释。选项3:buy操作,buy()函数调用了加密函数en
  • 2024-06-18pwn学习-pie绕过
    之前学习了栈溢出常见的利用手法,有ret2text、ret2plt、ret2syscall、ret2shellcode、ret2libc、ret2csu溢出栈迁移,这里接着学习一下常见的绕过pie的手法PIEPIE(PositionIndependentExecutables)是编译器gcc的一个功能选项fpie,主要的功能是随机化了ELF装载的基地址,使用分页内存
  • 2024-06-18BUUCTF PWN
    ripchecksec分析一下,发现没有开NX,PIE。栈段可执行,还有RWX的段看了一下main函数存在栈溢出,然后有一个fun函数很奇怪跟进看一下,发现是后门,很简单的ret2text,但是做64位题的时候要注意堆栈平衡frompwnimport*#io=process('./pwn1')io=remote("node5.buuoj.cn",25429)
  • 2024-06-14长城杯CTF2024-PWN-kawayi复现
    文件保护libc版本uaf漏洞free函数没有进行置0操作GDB断点断点:0xD90泄漏libc由于v1>3会退出,所以必须在四次申请堆块中拿到shell第一次申请-创建largebinchunk因为创建largebin的chunk堆块,所以申请的是0x430第二次申请-创建tcachebinchunk申请一个tcache
  • 2024-06-13pwn学习-栈迁移
    栈迁移:简单理解就是在栈溢出的时候可溢出的字符过少,只能溢出ebp和ret的地址,可以使用leave_ret这个gadget来实现栈的迁移。在栈中,默认情况下汇编语言在栈结束的时候都默认会执行一次leave和ret指令,我们利用这个特性将返回地址修改为leave_ret的gadget,将会执行两次leave和ret的操
  • 2024-06-12栈溢出漏洞利用二,ret2syscall,构造rop链条实现攻击(pwn入门)
    原理原理就直接参考别的大佬写的文章讲下了 参考文章:https://blog.csdn.net/qq_33948522/article/details/93880812ret2syscall,即控制程序执行系统调用,获取shellret2syscall通常采用execve(重点函数,32位调用号为0x0b,64位调用号为0x3b)ROPReturnOrientedProgramming,其
  • 2024-06-04pwn学习-ret2csu
    再上一次学习栈溢出ret2syscall方法时,我们会发现有些gadget不存在,我们只能借用read遗留下来的ebx寄存机调用,这时就可以使用万能gadget,这个万能的gadget存在__libc_csu_init中,由于每个动态链接的程序就有有libc,并且__libc_csu_init用于初始化,所以说几乎每个程序都含有__libc_csu_i
  • 2024-06-04[Black Watch 入群题]PWN 1
    frompwnimport*fromLibcSearcherimport*#p=remote('node4.buuoj.cn',25986)p=process('./a')context(arch='i386',os='linux',log_level='debug')e=ELF('./a')level_ret_addr=0x08048511bss_add
  • 2024-06-02pwn学习-ret2libc
    昨天学习了re2syscall,该方法主要是系统中没有system()函数,也没有/bin/sh字符串,一般该二进制程序使用staticlink静态链接,可以找到很多的gadget,我们可以利用这些gadget进行系统调用但是在动态链接时,gadget就变少了,也是同样的没有system()函数,这时我们需要再函数动态绑定的libc中找
  • 2024-06-01PWN-栈迁移
    栈迁移题目:BUUCTF在线评测(buuoj.cn)知识点:栈迁移使用情况:题目中有栈溢出,但是栈溢出的范围有限,导致构造的ROP链不能完全写入到栈中,此时需要进行栈迁移,将栈迁移到能接受更多数据的位置(改变相继sp、bp寄存器的值),位函数调用、传参构造一个新的栈空间。函数调用时,无论
  • 2024-05-31pwn学习-ret2plt
    在之前进行ret2shellcode的学习时,需要NX保护机制是关闭的,但是现在一般情况下,保护机制默认都是开启的,那么该怎么办呢?下面我们将学习ret2plt技术,够着ROPChain来执行我们想要的代码ret2plt这种技术的目的是从PLT中泄漏函数的地址,例如二进制程序中有一个system或其他危险函数的
  • 2024-05-30pwn学习-ret2shellcode
    今天学习了pwn中的ret2shellcode,在之前学习的ret2text中,程序给我们留下了后门函数,可以直接溢出执行,而ret2shellcode是最经典的栈溢出漏洞利用方法,简单原理如下:在栈溢出漏洞利用成功后,我们可以控制返回地址代码执行,但是这些代码在程序中默认没有,需要我们自己添加,这段代码被称为s
  • 2024-05-30pwn堆的结构及堆溢出理解
    堆其实就是程序虚拟地址空间的一块连续的线性区域,它由低地址向高地址方向增长(栈由高地址向低地址增长)。我们一般称管理堆的那部分程序为堆管理器。堆是分配给程序的内存空间与栈不同,堆内存可以动态分配。这意味着程序可以在需要的时候从堆段中请求和释放内存。此外,此内存
  • 2024-05-29pwn长征路
    只是私人学习记录的备份,不建议参考学习模板frompwnimport*context(os='linux',arch='amd64',log_level='debug')#context.update(arch='i386',os='linux',log_level='debug')#context(os='linux',arch='
  • 2024-05-29pwn常用工具快捷键学习
    vim普通模式G(普通模式)来的文本最下方g+g(普通模式下)回到文本的开头f+目标单词的首字母(find普通模式)移动到目标单词d(delete)删除当前行u(undo)撤销文本模式I从当前行开头进行输入A当前行文末输入idaF7单步执行,遇到call
  • 2024-05-29pwn题libc换源
    资料:pwn题更换libc版本(z1r0.top)​pwn技术分享——使用patchelf和glibc-all-in-one替换程序依赖的libc文件_哔哩哔哩_bilibili下载libc./download2.23-0ubuntu11.2_amd64#glibc为你想要下载glibc的名字./download_oldlibc#list没有,可以使用./downl
  • 2024-05-29栈溢出漏洞利用,详解基本ROP,构造rop链条实现攻击(pwn入门)
    写在前面:随着NX(Non-eXecutable)保护的开启,传统的直接向栈或者堆上直接注入代码的方式难以继续发挥效果,由此攻击者们也提出来相应的方法来绕过保护。目前被广泛使用的攻击手法是 返回导向编程 (ReturnOrientedProgramming),其主要思想是在 栈缓冲区溢出的基础上,利用
  • 2024-05-29BUUCTF pwn actf_2019_babystack
    先checksec看保护: ida看主程序:主要部分图片已经说了,由于最多只能往s中写入224字节,padding占据208字节,fakeebp是8字节,ret是8字节,便填满了,由于此处没有backdoor,于是想到栈迁移,在s上部署system("/bin/sh"),在leave_ret到s栈的地址,实行system("/bin/sh")思路分析: 1.先
  • 2024-05-29ctf-pwn 学习前知(1)
    学习pwn这个抽象到一定程度的东西,前期的坐牢是一定的,一个题目延申出的新知识也是超多的。所以写一个这个板块记录一下自己学习的东西,或许会有(2),(3)....checksec拿buuctf的test_your_nc为例子可以看到checksec后出现了很多东西Arch:amd64-64-little(程序架构信息,这是一个64位
  • 2024-05-26pwn练习
    [GFCTF2021]where_is_shellfrompwnimport*>>>elf=ELF("./shell")[*]'/home/za/ctf/pwn/nssctf/whereisshell/shell'Arch:amd64-64-littleRELRO:PartialRELROStack:NocanaryfoundNX:NXen
  • 2024-05-26pwn杂项之linux命令执行
    通常pwn题目,时常会考到对Linux命令的一些使用,比如当cat被禁用的时候,可以使用tac,或者别的命令代替
  • 2024-05-25【介绍下Pwn,什么是Pwn?】
  • 2024-05-24pwn基础入门-buuctf-2.rip
    2.rip题目:函数溢出,熟悉解题思路过程将下载下来的pwn1文件内容,放到ubuntu中checksec一下ubuntu中checksec文件从图上可以看出它是一个64位程序,仅开启了栈不可执行保护,没有打开NX防护(堆栈可执行),NoPIE.下面我们用IDA打开这个文件F5打开这个文件后,会有这样一