Sunichi's Blog

sunichi@DUBHE | Linux & Pwn & Fuzz

0%

buf的空间大小为0x400,read()的读入长度也为0x400。进入echo()函数继续查找。

字符串s2长度为0x10,内容从buf进行拷贝,当遇到\x00时特,停止拷贝。栈布局如下

size data
0x10 s2
0x08 saved ebp
0x08 return address
0x400 buf

构造如下payload

阅读全文 »

使用ida查看程序,在函数0x40063d中有read函数,读取用户输入的200个字节。接着调用puts函数输出。

1
2
sub_40063D((__int64)&v1, 200);
return puts("bye~");
阅读全文 »

为栈溢出,溢出点为buf,长度0x6C,read可输入0x100。溢出偏移为112。

1
read(0, &buf, 0x100u); // buf length: 0x6C
阅读全文 »

使用ida查看程序,首先保存esp和_exit地址,随后将输出的字符串压栈:

1
2
3
4
5
6
7
8
9
push esp
push offset _exit
xor eax, eax ; ebx, ecx, edx
push 'Let's start the CTF:'
mov ecx esp ; addr
mov dl, 14h ; len
mov bl, 1 ; fd
mov al, 4 ; syscall num, write
int 80h
阅读全文 »