发布于 

emarm

GOT表与PLT表

PLT表存储出现过的GOT表地址,GOT表指向全局函数所在的地址。

所以如果在运行时将GOT表中的某个函数改为目标函数并运行就可以达到访问shell的目的。

one_gadget

搜索某个版本的libc中的所有调用系统的函数,并返回成功条件。

HWS计划 emarm WP

读流程,发现第一步是字符串匹配,但是有长度参数,所以直接传入'\0'截断。

没有机会溢出。没有格式化输出。

然后发现是读入一个8位字符串,通过atoi变为地址,并向其中读入另一个字符串,重复一遍。

也就是说有两次修改内存的机会。

调用one_gadget,看到有一个execl函数,只要第二参数为0就可以调用,注意到fread第二位就是我们可以写入的地址。所以第一步把got表中fread的地址改为execl这个函数的,第二步传入0,就可以了。

ps

看了大佬的wp,发现还可以直接第一步修改atoi函数,然后第二步输入'',但是由于远程关了,qemu也没装好,没法复现arrch64下的题,并不知道自己究竟有咩理解正确。

Enter text in Markdown. Use the toolbar above, or click the ? button for formatting help.


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 [@Zuni](http://example.com/) 创建,使用 Stellar 作为主题。