[NISACTF 2022]UAF
正常的增删改查功能 add 中创建一个堆放入 page 在数组之中的,v1 作为计数变量,每添加一个都自增 show 函数中输入 0 时会调用 (*((void (__cdecl **)(char *))page + 1))(page); 程序是 32 位使用 page+1 = page 地址+4 page[4]=函数名 page[0]=参数 此时就是需要修改 page[0]=sh\x00\x00+system 地址 使用sh\x00\x00 是因为只能存入 4 字节/bin/sh\x00 超出 4 字节 但是在 edit 函数中我们无法直接去修改 page[0] 中的值 del 函数中 free 未置 0 但是 v1 这个计数单位也未置 0 此时我们可以用到堆中的机制 先创建一个 chunk1,再释放掉 chunk1,此时在申请一个 chunk2 chunk2 使用的还是 chunk1 的地址,因为申请一个比较小的堆块时会在 fastbin 中先进行查找有没有对应 size 的堆块,如果有那就申请出来 所以我...
[BJDCTF 2020]YDSneedGirlfriend
经典的增删改查 add 函数中就很有看头了,先申请了一个固定 0x10 大小的 chunk,又在 chunk 的 data 段写入的 puts 函数地址,又在 chunk->data 段+0x8 后面写入了一个新 chunk,并且往新 chunk 的 data 段写入 her name free 函数中未置 0 存在 uaf show 函数中使用 chunk->data 作为函数调用输出chunk->data(我调用我自己输出我自己了属于是 程序有完整的后面函数 此时我们想法是在 show 中实现调用后面函数 此时我们如果申请两个 0x20(实际申请 0x30 大小的 chunk ,并且 free 掉后 在 fastbin 中 0x20:chunk1->chunk0、0x30:chunk1->chunk0 0x20 是 add 函数中在每一次调用时都会申请的一个 0x10 大小的 chunk 此时我们可以利用这一点 在 add 函数中申请一个 0x10 大小的 chunk,会把 fastbin 链表中两个 0x20 的 chunk 申请出...
ctfshow43-67
1-pwn43 ida打开文件后发现有明显的溢出点 有systeam函数可以使用,但是没用/bin/sh,尝试使用libc无法成功 gdb vmmap可以查看到程序有一段可写的部分,可以使用这一部分去写入/bin/sh 使用objdump -d -j .plt pwn命令可以查看到程序的函数plt地址 12345678910111213141516171819202122232425from pwn import * #引用pwntools库context(log_level='debug',arch='i386',os='linux')ming=1if ming: p=remote('pwn.challenge.ctf.show',28282)#配置远程连接 28282else: p=process("pwn")#配置本地连接:#gdb.attach(p)main_add=0x080487AFsystem=0x804845...
御网杯
ez_pwn 关闭标准输出流 溢出点 考虑使用wirte(2, got, 0x200) 程序 gadget 有 rdi 和 rsi,rdx 调试后发现没有被修改过还是 200,就无需修改,泄露 write 的真实地址,算出偏移,即可 获得 sh 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364from pwn import * #引用pwntools库from LibcSearcher import *misaki=1if misaki: context(log_level='debug',arch='amd64',os='linux')else: context(log_level='debug',arch='i386',os='linux')ming=1...
SQCTF
浅红欺醉粉,肯信有江梅直接nc连接即可 借的东风破金锁 输入的内容只要相等即可 但是直接输入就超出了范围 ai搜出输入方法 12345678910111213141516171819202122232425262728293031323334353637383940414243from pwn import * #引用pwntools库from LibcSearcher import *misaki=1if misaki: context(log_level='debug',arch='amd64',os='linux')else: context(log_level='debug',arch='i386',os='linux')ming=1if ming: p=remote('challenge.qsnctf.com',31915)#配置远程连接nc challenge.qsnctf.com 31915else: ...
轩辕杯
轩辕杯
各大Linux的libc版本
libc版本的不同
系统调用号
pwn做题时调用函数需要使用的系统调用号
nps服务搭建
nps是一款内网穿透工具,分服务端和客户端,本文章是以搭建服务端为例题
我的世界服务器搭建
这里主要使用的是 MCSM 面板可以一键搭建好服务端选择好要安装的java版本后,下一步来进行安装部署(以 java 17 来举例): 12345cd/sudo wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "https://download.oracle.com/java/17/archive/jdk-17.0.10_linux-x64_bin.tar.gz"sudo mkdir -p /usr/local/javasudo tar -zxvf jdk-17.0.10_linux-x64_bin.tar.gz -C /usr/local/java/sudo vi etc/profil 12export JAVA_HOME=/usr/local/java/jdk-17.0.10export PATH=$&...