Full RELRO:不能修改程序的 got 表
fflush():是一个计算机函数,功能是冲洗流中的信息
LOWORD()得到一个32bit数的低16bit
HIWORD()得到一个32bit数的高16bit
LOBYTE()得到一个16bit数最低(最右边)那个字节
HIBYTE()得到一个16bit数最高(最左边)那个字节
十六进制中一字节为2位
x64:8字节地址即为16位十六进制地址
x32:4字节地址即为8位十六进制地址
p.recvline().strip() 接收一行 去掉开头和结尾的空格和换行符
格式化字符串
pwnme_k0
当要修改的地址和原地址只有低4位(2个字节)不同时 可以使用%hn,由于系统是小端存储,因此直接%md%a$hn(其中m为要修改的数字的十进制,a为修改处的偏移)
利用 %hhn 向某个地址写入单字节,利用 %hn 向某个地址写入双字节
contacts
\ x00会导致 printf 的时候出现 0 截断
Leave等价于:
movl ebp esp 将sep指向ebp
popl ebp ebp指向新的ebp
ret 等价于 pop eip
今日疑问:
exp中写的地方不是函数c29的ebp吗,怎么变成main函数的ebp了
读源码 没有看出来heap的起始是第一个联系人的描述?
答:不是第一个联系人 是当前联系人 输出的是当前联系人的描述