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.