还是来自于BUUCTF的机器,今天的很简单,就是单纯的考察了read函数的漏洞,以及对64位寄存器的理解
开始
首先还是经典查壳和内存保护,发现啥也没有,是很简单的机器。然后IDA反编译一下,由于是64位的软件所以需要IDA64
main函数
首先可以看到主函数中知识调用了write函数,并输出了Hello, Worldn这么几个字到终端。
之后调用了vulnerable_function函数
因为反汇编并不会给出类似于write这种函数的定义,
所以需要熟悉汇编的同学自行根据效果来判断各寄存器中值的作用。
edx是控制输出字符的长度
esi则是源字符串的标志地址
edi是输出的位置,大家可能比较熟悉 C://file.txt这种形式,这里的1表示输出到终端
Vulnerable_Function函数
此处是漏洞函数,看上去read做了长度限制,但其实一点用也没有