PWN
沈理大学牲
这个作者很懒,什么都没留下…
展开
-
[BJDCTF 2020]babyrop
puts_add = u64(i.recv(6).ljust(8,b'\x00'))用来接收plt表中的puts的真实地址的。提醒一下,elf.ELF是()不是[]不难,按照以往的就可以。原创 2023-12-17 18:22:17 · 311 阅读 · 0 评论 -
[HNCTF 2022 Week1]ret2shellcode
mprotect()函数把自start开始的、长度为len的内存区的保护属性修改为prot指定的值。但是有个memset(s, 0, sizeof(s));4)PROT_NONE:表示内存段中的内容根本没法访问。先指定context.arch="i386/amd64"2)PROT_WRITE:表示内存段内的内容可读;3)PROT_EXEC:表示内存段中的内容可执行;1)PROT_READ:表示内存段内的内容可写;asm(自定义shellcode)file 和checksec。一道shellcode的题。原创 2023-12-11 17:59:04 · 203 阅读 · 0 评论 -
[HNCTF 2022 WEEK2]ez_backdoor
开启栈地址随机化。原创 2023-11-27 21:13:52 · 376 阅读 · 0 评论 -
[CISCN 2019东北]PWN2
p64(pop_ret_rdi_addr)+p64(bin_sh_addr):system函数的参数准备,即把'/bin/sh'的地址传入。p64(pop_rdi)+p64(puts_got)+p64(puts_plt)+:输出puts函数的真实地址,用于后面的寻找libc。#'/bin/sh'的真实地址=libc基址的真实地址+'/bin/sh'相对于libc基址的偏移量。#system函数的真实地址=libc基址的真实地址+system函数相对于libc基址的偏移量。原创 2023-11-20 21:28:09 · 330 阅读 · 1 评论 -
[HNCTF 2022 Week1]easyoverflow
v4的长度为44字节,只需要将他溢出,并将v5覆盖成一就可以了。v4和v5距离rbp的距离可以算出它们之间的相对偏移。原创 2023-11-17 23:20:10 · 229 阅读 · 0 评论 -
[WUSTCTF 2020]getshell
发现后门函数 shell,并且在vuin函数存在栈溢出。file 和checksec 检查文件。一道简单的ret2text。原创 2023-11-14 19:43:03 · 178 阅读 · 0 评论 -
[GFCTF 2021]where_is_shell
在ROP攻击中,攻击者利用程序中存在的这种gadget,通过精心构造的数据将程序控制流引导到这个gadget,从而实现对程序行为的控制。通常情况下,攻击者会将需要的参数放置在栈上,然后利用ROP链将控制流引导到 "pop rdi;ret" 这样的gadget,将参数加载到合适的寄存器中,然后再执行调用目标函数的ret指令。在x86_64架构中,这个gadget的作用是从栈中弹出一个数值,并将其赋值给RDI寄存器,然后进行返回。先覆盖到地址,然后执行ret,ret用来返回弹出的地址,然后执行pop_rdi;原创 2023-11-13 22:28:36 · 473 阅读 · 0 评论 -
[NISACTF 2022]ezpie已解决
PIE全称是position-independent executable,中文解释为地址无关可执行文件,该技术是一个针对代码段(.text)、数据段(.data)、未初始化全局变量段(.bss)等固定地址的一个防护技术,如果程序开启了PIE保护的话,在每次加载程序时都变换加载地址,从而不能通过ROPgadget等一些工具来帮助解题。原创 2023-10-31 17:42:11 · 536 阅读 · 1 评论 -
[watevrCTF 2019]Voting Machine 1
shiift+F12查找字符串,发现flag.text跟踪。简单的栈溢出距离RBP 0X2并且是64位。原创 2023-10-30 20:18:35 · 291 阅读 · 1 评论