第五届大学生浙江省网络安全大赛预赛-pwnnew_stack 后门函数会将我们输入的数据写入栈中,刚好最后8字节可以修改X29寄存器的值,而这个寄存器在程序中是用来临时储存函数第一个参数的寄存器,会用来修改X0寄存器,刚好在后门函数结束后会执行一次输入输出,这时可以通过修改got表控制程序流程 1234567891011121314151617181920212223242526272829303132""&quo 2022-09-29 wp #ctf #pwn #wp
文件格式头Mime Type(Content-Type) 文件扩展名 文件头 video/3gpp 3gp 00 00 00 14 66 74 79 7000 00 00 14 66 74 79 7000 00 00 20 66 74 79 7000 00 00 20 66 74 79 70 video/mp4 mp4 00 00 00 14 66 74 79 70 69 73 6f 6d 2022-09-28 #ctf #misc
第六届强网杯青少年杯战队信息 战队名称:Rml 战队排名:5 web web1 CVE-2021-41773,payload直接打 misc misc1 base64解密后得到一张图片,但是每两个字节被换了位置 修复脚本 123456f=open('a.png','rb')f1=open('b.png','wb')data=f.read 2022-09-23 wp #ctf #wp
2022巅峰极客-pwnGift 程序中仅允许创建10个chunk,但在remove_gift函数中存在uaf,bargain函数可以用来修改chunk的fd,且可以输入负数让fd向大地址偏移,但只能修改低四字节,经过测试,靶机中libc版本为libc_2.27~libc_2.31,所以可以利用tcache bin attack,在free_hook的位置写入one_gadget函数,来获取shell,使用正常的 2022-08-18 wp #ctf #pwn #wp
2021美团高校挑战赛-pwnbabyrop main函数中v6变量仅占24字节,但却允许输入25个字节,刚好可以泄露cookie的值 在main函数伪代码中,输入v5的值处,并不是让v5的值为"password",而是要v5的值为"password"的地址 vuln函数中存在栈溢出,但溢出数据长度较小, 仅能做到修改rip的值,所以要通过多次栈迁移构造payload 1234567 2022-08-08 wp #ctf #pwn #wp
2022 corctf-pwncshell2 在create,show,delete,edit函数中都检测了chunk数组中对应的chunk的size是否为0,这表示在正常情况下,如果chunk被释放了之后,就无法使用show,delete,edit函数,对那个chunk进行操作,但change_age函数可以修改被释放的chunk的bk_nextsize字段 create只允许创建大于等于0x408大小的chun 2022-08-08 wp #ctf #pwn #wp
第五届强网拟态挑战赛预赛-pwnbfbf 通过run_bfbf函数中看到,brain fuck的指针指向的地址位于栈中,且没有限制偏移大小,所以可以利用 <,>或[]将指针偏移到指定位置泄露run_bfbf的返回地址,__libc_start_main函数地址,并且可以控制返回地址,构造rop 程序中开启了沙盒,当程序执行过程中从非0或1句柄中读取数据,就退出程序,这让我们不能通过执行/bin/sh获取设立了 2022-08-08 wp #ctf #pwn #wp
ret2dl_resolve是利用elf文件的延迟绑定技术_dl_runtime_resolve,达到攻击目的的一种技术 程序在执行时,程序link_map结构体的地址位于got表的第二项,_dl_runtime_resolve函数地址位于got表的第三项 在使用_dl_runtime_resolve导出函数时,会设置函数在got表中对应的项为函数真实地址 如果程序开启了PIE保护,那么会在加载程序的阶段,将got表中对应 2022-06-24 pwnbase #ctf #pwn
整型溢出及栈溢出整数溢出 由于数据类型的使用不当产生的利用点 如: 123456789101112131415#include<stdio.h>#include<stdlib.h>int main(){ int a=0; char c[10]=""; read(0,c,5); if (c[0]=='-') { 2022-06-23 pwnbase #ctf #pwn
格式化字符串利用程序直接对用户可控制的数据格式化,让用户可以利用格式化字符串达到任意地址读写 因为格式化字符串的参数在栈中,所以尽管无法写,也可以从栈中获取些有用的信息 格式化详解 printf实际执行的是位于stdio-common/vfprintf-internal.c文件中的vfprintf函数 在vfprintf中会按照占位符的顺序输出字符串,但如果占位符中存在$就会执行printf_position 2022-01-23 pwnbase #ctf #pwn