pwn百题计划
pwn百题计划(2024暑假)
Wz0beu-淤青
个人博客地址:http://wz0beu.cn/
展开
-
nssctf-[SWPUCTF 2022 新生赛]Integer Overflow
【代码】nssctf-[SWPUCTF 2022 新生赛]Integer Overflow。原创 2024-07-10 20:42:30 · 134 阅读 · 0 评论 -
nssctf-[HGAME 2022 week1]test your gdb
泄露出Canary的值,我的理解是将从v6开始的内存单元读取0x100个字节并写入1中,因此我们可以根据v7与v6的偏移将v7读取出来。注意接收Canary前发送payload选择send就行,如果用sendline会多发送一个换行符,这时Canary的接收就不是p.recv()[0x20-0x8:0x20]了。由代码可知,需要绕过Canary保护,当buf=s2时可以进入栈溢出代码,同时程序有后门函数。也就是p.recv()[0x20-0x8:0x20]IDA打开程序:下面是程序的主要代码。原创 2024-07-10 13:31:49 · 230 阅读 · 0 评论 -
nssctf-[HNCTF 2022 Week1]ezcmp
这里我们也可以用另一种方法,既然要比较buff和buf的内容,那我们可以直接根据buff的地址获取到加密后密文的存储地址。根据反编译后的代码可知只要满足buff=buf就可以getshell。但是无法直接输入,所以还是要借用pwntools。根据IDA可得buff的地址为0x404100。这题比较简单了,主要就是考察你会不会用gdb。在puts和read处设置断点。gdb调试命令还是不熟(哭)原创 2024-07-08 12:03:31 · 238 阅读 · 0 评论 -
nssctf-[HUBUCTF 2022 新生赛]fmt
如果文件成功打开,返回一个指向文件的指针 stream,否则返回 NULL。在成功打开文件后,从文件中读取最多50个字符(包括换行符和终止符)到 s 数组中。fgets 函数会读取一行内容,直到达到指定的字符数(包括终止符)或遇到换行符或文件结束标志。如图,rbp的地址已知,反向推出s的位置,即可得到s相对于格式化字符串的偏移%12$p。此时即可编写exp,注意程序是小端序,得到16进制编码的flag后进行还原。没在CSND上看到这题的wp,整理一下思路。依次处理其他字符串,最终输出完整的flag。原创 2024-07-03 21:28:21 · 316 阅读 · 0 评论 -
nssctf-[深育杯 2021]find_flag
可以看到,Canary被存在了ebp的前一个字(8个字节),栈底从format开始,所以从栈底到Canary有(0x60-0x8)/8个字,即第11个字,算上6个参数在寄存器中,Canary会被默认当作第11+6=17个参数。变量v3即为我们需要绕过的Canary保护,即在栈溢出时控制还原Canary的值,同时注意程序开启了PIE保护,需要计算程序运行时的真实地址。这里我们需要泄露出一个函数或者程序中的地址,由上图所示可以泄露出mov eax, 0的地址。如图所示,保护全开,64位可执行文件。原创 2024-07-03 00:30:15 · 301 阅读 · 0 评论