64位程序,打开ida进行分析,mian主函数调用了vuln函数 这里有两个函数,sys_read和sys_write函数,分别往栈上写0x400的数据,和从栈上读0x30的数据,那么存在栈溢出 我们可以看到有一个gadgets函数 要重点关注mov rax,0fh和mov rax,3bh这两条命令 这两个gadget控制了rax的值,我们可以看看是什么系统调用 0xfh 15 ...
可以看到0x7fffffffde70这个地址处的值0x00007fffffffdf78已经将栈地址泄露出来,然后我们输入的值是存在0x7fffffffde50处,用0x00007fffffffdf78-0x7fffffffde50=0x128,这个0x128的用处是: 因为程序每次加载程序,栈地址可能都会变化,但是偏移是不变,我们可以利用这个偏移和泄露的栈地址确定到我们输入的地址,如果我...
ciscn_2019_s_4*** 这是十分经典的栈迁移题目 拿到题目例行检查 32位程序开启了nx保护 进入ida,发现了很明显的system 我们进入main函数查看vul 可以看到溢出的部分不够我们rop所以这道题通过栈迁移去做 首先先通过溢出泄露出ebp的地址然后通过ebp的地址进行偏移 可以看到我们输入的a的地址是0xd140ebp的地址是0xd...
ciscn_2019_s_3 技术标签:buuctf 查看原文 “百度杯“ 十二月场 easypwn 得出syscall的地址3.利用 __libc_csu_init()函数构建rop链来运行execve(’/bin/sh’,0,0) exp 我们知道execve的系统调用号为0x3B,而且read函数会返回读入数据的字节长度,并将这一结果放入eax,所以满足系统调用时eax中存放调用号这一...
3. 调用方式 不同 32位: 传参方式:首先将系统调用号 传入 eax,然后将参数 从左到右 依次存入 ebx,ecx,edx寄存器中,返回值存在eax寄存器 调用号:sys_read 的调用号 为 3 sys_write 的调用号 为 4 调用方式: 使用 int 80h 中断进行系统调用
ciscn_2019_s_3 一查保护 二、代码审计 三、过程 大概就是一个read和一个write,往栈里可写0x400,可读0x30,其中0x20没什么用,接下来8个字符是栈上地址,相对于首字符相差280,用来确定字符串/bin/sh位置,gadget里有系统调用execve 四、脚本 frompwnimport*#context(os='linux', arch='amd64', log_level=...
BUU ciscn_2019_s_3 最近在做XYCTF,遇到了一道srop的题目,想起来之前这道题还没做,就当做复习srop,就把做了这道题,写完了看了下别人的wp,用srop的方法感觉大部分都是将'/bin/sh'写到栈上,确定其在栈的位置,然后做一次srop来execve,(一个ret2csu的方法我不会,哈哈),我是构造了srop链,把'/bin/sh'...
现在让rdi=/bin/sh 所需要的都已经获得,构造exp 成功获取到flag 结束 参考博客! [BUUCTF]PWN21——ciscn_2019_s_3 - Angel-Yan - 博客园 (cnblogs.com) (4条消息) 【pwn】ciscn_2019_s_3_Nothing-CSDN博客_ciscn_2019_s_3
BUUCTF PWN ciscn_2019_s_3 signed__int64vuln(){signed__int64 v0;// raxcharbuf[16];// [rsp+0h] [rbp-10h] BYREFv0 =sys_read(0, buf,0x400uLL);returnsys_write(1u, buf,0x30uLL); } 检查过后发现 应该是栈溢出 跟网上出入很大 暂存 ...