syscall与csu结合以及srop的简单使用 syscall与csu结合以及srop的简单使用基础检查 放入ida 存在栈溢出,并且buf只有0x10,而write有0x30,因此可以泄露栈上的内容 3B=59是execv的调用号,这个指令可以调用内核execv 如果能够知道/bin/sh的地址,就可以获得shell 因为栈上没有/bin/sh,可以考虑read读入,结合前面有漏洞可以泄 2024-03-21 栈利用 > python #原创
关于ret2libc的泄露 关于ret2libc的泄露 原理:在程序运行中,当函数运行过一次之后,会将函数的地址存在got表中,我们可以利用输出函数对函数地址进行泄露 puts64位*题目* 基础检查,只有NX保护 丢入ida 第二个read 明显存在栈溢出 寻找system 发现找不到system 和binsh 也没有flag的字符,初步认为要泄露libc 接下来开始payload的构造 注意64位要用寄存器来传参 2024-03-13 栈利用 > python #原创
csu利用 csu的利用 原理 64位的动态连接文件一般有一段万能的gadget,里面可以控制rbx,rbp,r12,r13,r14,r15以及rdx,rsi,edi的值,并且还可以call我们指定的地址。然后劫持程序执行流的时候,劫持到这个__libc_csu_init函数去执行(这个函数是用来初始化libc的) csu在我看来分为两种,一种是通过csu泄露基地址后,跟ret2libc一样调用就可以做出,一 2024-03-04 栈利用 > python #原创
canary的绕过方法 Canary 的绕过方法 一、字符串截断获取canary 原理: Canary设计其低字节为\x00,本意是阻止被read、write等函数直接将Canary读出来。通过栈溢出将低位的\x00覆写,就可以读出Canary的值。 二话不说,上题 基础检查发现canary 丢入ida中 发现在循环printf,并且存在字符串漏洞(这个稍后再谈) 同时有getshell函数 可以直接拿s 2024-02-20 栈利用 > python #原创
canary_ssp泄露 canary_ssp泄露原理:当程序运行时检测到canary 被破坏,会执行__stack_chk_fail函数 并且打印 1*** stack smashing detected ***:./pwn(程序名) terminated 可以看到 程序名存在__libc_argv[0],如果我们能够通过溢出覆盖掉__libc_argv[0]就可以实现任意地址泄露(高版本的libc取消了这个打印) 2024-02-13 栈利用 > python #原创