pwn练习题-jarvisoj_level0
简单题:

看一下main函数

1 | write(fd: 1, buf: "Hello, World\n", n: 0xDu); |
关于这个fd:跟的数字,这里做一个总结
| fd | 名称 | 作用 |
|---|---|---|
| 0 | stdin | 标准输入,通常是键盘 |
| 1 | stdout | 标准输出,通常是终端 |
| 2 | stderr | 标准错误,通常也输出到终端 |
Hello, World\n已经有13个字节了
这里对比一下这个read和write,这两个容易搞混
举例分析:
read(0, buf, 0x20):从标准输入读取最多 32 字节,放入 buf。write(1, buf, 0x20):从 buf 读取 32 字节,写入标准输出。
这个不是解题的关键,关键是vulnerable_function(a1: v3)

只有128的栈空间要塞入512,结合前面没有金丝雀,妥妥的栈溢出,结合看到的callsystem,反汇编找一下这个函数的地址,搞定

写exploit:
1 | from pwn import * |
结果
