文章分类 - pwn
摘要:#一、查保护 #二、代码审计 #三、思路 全绿...通过栈溢出报错函数(函数如下)带出flag。 栈溢出报错函数 void __attribute__ ((noreturn)) __stack_chk_fail (void) { __fortify_fail ("stack smashing det
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 栈溢出,但是溢出的字节有限,此时我们就需要用到栈迁移,第一次泄露ebp并确定s数组的偏移(0x38)然后再构建rop。 #四、脚本 from pwn import * #context(os='linux', arch='amd64', log_level=
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 传统rop #四、脚本 from pwn import * from LibcSearcher import * #context(os='linux', arch='amd64', log_level='debug') ru=lambda x:io.rec
阅读全文
摘要:#一查保护 #二、代码审计 #三、过程 大概就是一个read和一个write,往栈里可写0x400,可读0x30,其中0x20没什么用,接下来8个字符是栈上地址,相对于首字符相差280,用来确定字符串/bin/sh位置,gadget里有系统调用execve #四、脚本 from pwn import
阅读全文
摘要:#一、查保护 NX与ASLR都开启了,不白给了。 #二、代码审计 然而没有发现callsystem后门函数,开了NX需要自己构造ROP链。 基本思路:encrypt()里面的get()可以溢出,栈大小为50h。puts()可以用来泄露libc基址。 #三、过程 ROPgadget --binary
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 rop利用prinft泄露read #四、脚本 from pwn import * from LibcSearcher import * #context(os='linux', arch='amd64', log_level='debug') ru=lam
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 首先溢出,这里使用负数可以溢出 然后利用printf泄露 然后shell #四、脚本 from LibcSearcher import LibcSearcher from pwn import * #context(os='linux', arch='amd
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 看不明白,连上去看看 #四、脚本 from pwn import * #context(os='linux', arch='amd64', log_level='debug') ru=lambda x:io.recvuntil(x) rl=lambda :i
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 栈溢出 #四、脚本 from pwn import * from LibcSearcher import * #context(os='linux', arch='amd64', log_level='debug') ru=lambda x:io.recvu
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 先泄露libc在shell #四、脚本 from pwn import * from LibcSearcher import * #context(os='linux', arch='amd64', log_level='debug') ru=lambda
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 先通过1功能添加,再通过4功能溢出 #四、脚本 from pwn import * #context(os='linux', arch='amd64', log_level='debug') ru=lambda x:io.recvuntil(x) rl=la
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 向bss段写入shell,再通过栈溢出跳入。 #四、脚本 from pwn import * context(os='linux', arch='amd64', log_level='debug') ru=lambda x:io.recvuntil(x) r
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 栈溢出ROP #四、脚本 from pwn import * #context(os='linux', arch='amd64', log_level='debug') ru=lambda x:io.recvuntil(x) rl=lambda :io.re
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 简单ROP #四、脚本 from pwn import * #context(os='linux', arch='amd64', log_level='debug') ru=lambda x:io.recvuntil(x) rl=lambda :io.rec
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 是不是很简单 #四、脚本 from pwn import * #context(os='linux', arch='amd64', log_level='debug') ru=lambda x:io.recvuntil(x) rl=lambda :io.re
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 给他一个gadget #四、脚本 from pwn import * #context(os='linux', arch='amd64', log_level='debug') ru=lambda x:io.recvuntil(x) rl=lambda :i
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 静态链接文件,栈溢出,有后门,存在bss段。 #四、脚本 from pwn import * from LibcSearcher import * #context(os='linux', arch='amd64', log_level='debug') r
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 栈溢出,提供了system和/bin/sh的地址。 #脚本 from pwn import * from LibcSearcher import * #context(os='linux', arch='amd64', log_level='debug')
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 看这保护吓到了,结果老签到题了 #四、脚本 from pwn import * from LibcSearcher import * #context(os='linux', arch='amd64', log_level='debug') ru=lambd
阅读全文
摘要:#一、查保护 #二、代码审计 #三、过程 \0绕过字符串处理栈溢出 #四、脚本 from pwn import * from LibcSearcher import * #context(os='linux', arch='amd64', log_level='debug') ru=lambda x
阅读全文