ICode9

精准搜索请尝试: 精确搜索
  • buuoj Pwn writeup 76-802021-02-24 20:29:26

    76 0ctf_2017_babyheap 保护 菜单堆。 allocate 堆的结构很明显了。要注意的是flag是四个字节。 fill 又是输入大小可以随便写。 又可以溢出。 free free的还是很干净的。 dump 平平无奇输出函数。 那么我们首先要考虑泄露libc的地址。泄露地址的方法只能去考虑unsorted bin

  • [BUUCTF-pwn]——[HarekazeCTF2019]baby_rop2021-02-11 11:32:27

    [BUUCTF-pwn]——[HarekazeCTF2019]baby_rop 题目地址:https://buuoj.cn/challenges#[HarekazeCTF2019]baby_rop 先checksec一下,64位,开启NX保护 在IDA中看看,发现了system函数 和 "/bin/sh"字符串 ,找到地址 因为是64位参数是储存在寄存器中,binsh字符串应该放在 rdi

  • buuoj Pwn writeup 41-452021-02-11 09:06:11

    41 [ZJCTF 2019]EasyHeap 保护 菜单堆题。 create 就是平平无奇的申请然后写入东西,地址在bss上面。 没有溢出。 edit这输入要写多少写就行,这就有了堆溢出了。 del 这个函数没啥问题,释放空间后野指针也清掉了。 但是吧,又发现了个这玩意。 那个133t是个后门函数。 所以问题就是

  • 栈溢出之ret2csu2021-02-07 22:34:56

    64位程序,函数的前六个参数存储在 rdi、rsi、rdx、rcx、r8、r9,其余的参数放在栈上 在ret2libc的时候,需要知道libc的基址,然后才能知道具体的库函数地址 那么首要的问题就是泄露出libc基址,如果有puts、printf函数还好说,倘若给一个write函数,那么泄露地址就成了一个棘手的问题了 因为wr

  • 关于谷粒商城P64集上传照片没有回显的解决方法2021-02-05 20:04:36

    关于谷粒商城P64集上传照片没有回显的解决方法 一、第一种办法 我认为是OssController里我们通过@Value注解已经获取了我们配置里的accessId,accessKey,endpoint,bucket等属性,所以我们就需要将下面的进行注解,用我们自己获取的,如下 @Autowired private OSS ossClient; @Value("${spri

  • 寒假训练 npuctf_2020_bad_guy(11/250)利用overlap与fastbin attack来篡改fd指针,从而通过stdout达到泄露libc2021-01-22 02:32:39

    题目其实本身不难,但我太菜了,这种基础题不会写,其次有个疑问就是为什么stdout可以泄露libc,还没有逆过这个函数,所以还不是很清楚 思路 由于没有show函数,所以只能通过stdout来leak libc,而这程序的edit函数有overlap,所以我们可以先把一个chunk放入unsorted bin中 在通过fast bin attac

  • actf_2019_babystack | stack pivoting2021-01-18 10:34:05

    静态分析 查看保护机制 IDA分析 存在有限栈溢出,可以输入 0xE0 字节的数据,而 s 在栈上只有 0xD0 的空间 由于没有开启 Canary,常规做法是 ROP,但是由于溢出字节长度的限制,需要进行一次栈迁移再进行 栈迁移的核心思路是把 esp&ebp 寄存器的地址改到到一个可读可写的空间上(比如堆栈)

  • C++基础入门---8.结构体【P64~P71】2020-12-26 15:03:46

    C++基础入门---8.结构体【P64~P71】 8. 结构体8.1 结构体的定义和使用8.2 结构体数组8.3 结构体指针8.4 结构体嵌套结构体8.5 结构体作函数参数8.6 结构体中const使用场景8.7 结构体案例18.8 结构体案例2 8. 结构体 结构体属于用户自定义的数据类型,允许用户存储不同的数

  • buuctf bjdctf_2020_babyrop2做题笔记 格式化字符串漏洞2020-12-10 20:31:22

    buuctf bjdctf_2020_babyrop2做题笔记 from pwn import * from LibcSearcher import * proc_name = '/home/pwn/Desktop/bjdctf_2020_babyrop2' p = remote('node3.buuoj.cn', 27642) elf = ELF(proc_name) puts_plt=elf.plt['puts'] puts_got=elf.

  • UNCTF2020 pwn题目2020-11-14 18:34:05

    YLBNB   用pwntools直接连接,然后接受就行。 1 from pwn import * 2 3 p = remote('45.158.33.12',8000) 4 context.log_level = 'debug' 5 print p.recvuntil('}')[-30:]   fan   简单的栈溢出,直接覆盖返回地址为shell的地址就行。 1 from pwn import * 2 3 p = pro

  • axb_2019_heap-format_string + off-by-one2020-10-24 19:32:18

    axb_2019_heap 简单题,格式化字符串泄漏栈地址 算上rsp,格式化字符串参数是栈顺序+6-1 edit有off by one 构造unlink chunk0 chunk1 chunk2 构造成这样,然后free1就行了 from pwn import * local = 0 binary = "./axb_2019_heap" libc_path = '../libc-2.23.so' port = "27201" i

  • buuctf-pwn:jarvisoj_level6_x642020-10-13 22:00:36

    jarvisoj_level6_x64   只能申请unsorted bin大小下的unlink IDA看一下,可以发现edit里面有任意堆溢出的情况(realloc造成堆溢出) 然后free里面有UAF漏洞       然后几个注意的点,unlink直接可以模板化   1,泄漏地址 包括libc或者存放heap pointer的地址 2,unlink,伪造谁用谁的指

  • 2020第五空间部分wp2020-06-26 13:36:57

    我是废物~,我个人的话出了4个题。分别是pwn类的twice,of,misc类的loop,re类的rev,写下wp,后续的话可能会更新pwn类的pwnme的wp,由于我环境搭建没打好,pwnme本来也是个简单题来着。 等环境整好了复现出来了在更新pwnme吧,现在先把现有的wp贴上去。 twice 程序循环两次,第一次泄露canary

  • Unlink学习总结2020-05-23 13:58:15

    Unlink 本文参考了CTF-wiki 和glibc 源码 原理: 我们在利用 unlink 所造成的漏洞时,其实就是借助 unlink 操作来达成修改指针的效果。 我们先来简单回顾一下 unlink 的目的与过程,其目的是把一个双向链表中的空闲块拿出来,然后和前后物理相邻的 free chunk 进行合并。其基本的过程如

  • 0ctf_2017_babyheap2020-05-16 19:03:41

    0ctf_2017_babyheap 首先检查一下保护 IDA 分析好的代码如下 首先申请了一块内存地址用来存放结构体数组,地址随机。 堆题常见的几个功能。我们来看看add 这里申请内存用的是calloc struct block{ unsigned int inuse; unsigned int size; char * chunkptr; } 这

  • ret2dl642020-05-14 13:56:34

    ret2dl64 ret2dl64 与ret2dl32不同,ret2dl64需要知道libc。 检查保护: IDA看一看 read_got 被置为0,强制你使用ret2dlresolve。 我们先伪造link_map,然后让程序去执行我们伪造的link_map,执行system('/bin/sh')。 首先我们需要恢复read函数的got表,方法就是布置好参数跳转到plt0重新

  • baystack(ret2one_gadget)2020-05-13 19:56:11

    babystack 首先检查一下保护 全保护开启,我们IDA分析一下。 main函数很简单,首先第一个read明显存在漏洞,如果不是以 \n 结尾会存在栈中地址的泄漏。 payload = 'A'*0x88+'A' #这里多加一个A是因为canary的低字节为\x00 p.sendafter("What's your name: ",payload) p.recvuntil(

  • 高校战“疫”网络安全分享赛pwn部分wp2020-03-11 12:02:24

    高校战“疫”网络安全分享赛pwn部分wp 博客地址 easyheap 刚复现的第一题,并且在刚开始的时候连洞都找不到…可真是当头一棒。 漏洞在申请的大小大于0x400时,return。这时ptr[i]没有被释放,接下来就是常规劫持ptr[i]堆块上的指针为got表。修改got表。来实现利用。 # -*- codi

  • 【pwn】 hitcontrain_bamboobox && ZJCTF_19_EasyHeap2020-03-06 15:08:12

    这两个题目类似,放在一起写。 例行检查 没有pie,got表可写。 程序逻辑 edit功能都存在堆溢出,堆指针都保存在bss段上,可以通过unlink对got表进行读写。本来两个程序都存在后门,但是oj在部署的时候路径有点问题,所以就想办法获取shell。 bamboobox存在show功能,可以泄露libc地址。

  • others_babystack2020-03-02 09:55:56

    Full RELRO  为got表只读  程序的功能如下    1是read函数,存在栈溢出,2是puts函数,可以泄露canary,3是退出   思路 :程序中插入了canary,用puts函数泄露,然后再用puts函数来泄露puts_got,用libcsearcher获得libc版本,最终getshell canary最后一个字节是 \x00  ,即可以覆盖canary的低

  • hitcontraining_bamboobox 堆技巧 unlink2020-02-27 18:02:09

    目录 利用思路 利用过程 get flag exp 脚本 内容来源 利用思路   由于之前 house of spirit 时候已经逆向分析过,这里不再重复 利用过程 add(0x40,'a' * 8) add(0x80,'b' * 8) add(0x80,'c' * 8) ptr = 0x6020c8 fake_chunk = p64(0) fake_chunk += p64(0x41) fake_chunk

  • JarvisOJ level3_x642020-02-27 10:00:14

    这一题是和前面x86的差不多,都是利用了同一个知识点,唯一的区别就是使用的堆栈地址不同,x86是直接使用堆栈来传递参数的,而x64不同 x64的函数调用时整数和指针参数按照从左到右的顺序依次保存在寄存器rdi,rsi,rdx,rcx,r8和r9中 所以要找到rop然后来讲rdi和rsi和rdx赋值,这里前面两个比

  • BUU PWN(一)2020-01-28 21:02:34

    test_your_nc 连上即可拿到shell rip from pwn import * context.log_level='debug' #p=process('./17pwn1') p=remote("node3.buuoj.cn","26137") p.recvuntil("please input\n") payload='a'*0xf+'a'*8+p

  • buuctf@ciscn_2019_c_12019-12-23 15:00:45

    from pwn import * context.log_level='debug' #io=remote('node3.buuoj.cn',29121) io=process('./ciscn_2019_c_1') libc=ELF('./libc.so') elf=ELF("./ciscn_2019_c_1") buf_end=0x00007FFECCEAFE18 buf_start=0x00007

  • Roarctf 几道pwn 复现2019-10-27 13:03:33

    1、easy_pwn   可以利用的点:    __int64 __fastcall sub_E26(signed int a1, unsigned int a2){ __int64 result; // rax if ( a1 > (signed int)a2 ) return a2; if ( a2 - a1 == 10 ) LODWORD(result) = a1 + 1; else LODWORD(result) = a1; return (unsigne

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有