我正在做我的学校项目“ROP on ARM vs x86”
我已经在 x86 上完成了我的工作,现在正在 ARM 上尝试“ret2zp”,我需要帮助。
请帮助这样的linux新手。
我正在关注Kumar 和 Gupta 的 ARM 'A Short Guid on ARM Exploitation' 中简单而简洁的示例
在第 41 页上,(我的声誉缺乏发布 img..sorry)
有一行
(gdb) r 'printf "AAAABBBBCCCCDDDD\x38\x84"
所以 Kumar & Gupta 试图放置 char 数组 AAAABBBBCCCCDDDD&„(带有扩展的 ascii 代码. 简单的ASCII码没有)
而且我不能用'printf'命令将我的char数组放在我的代码的参数上;
这是我使用'printf'的简单代码。
缓冲区溢出.c
#include <stdio.h>
#include <stdlib.h>
void IShouldNeverBeCalled(){
puts("I should never be called");
exit(0);
}
void Vulnerable(char *arg){
char buff[10];
strcpy(buff, arg);
}
int main(int argc, char **argv){
Vulnerable(argv[1]);
puts(argv[1]);
return(0);
}
它的工作原理是
root@linaro:~# ./buffer_overflow AAAABBBB
AAAABBBB
root@linaro:~# ./buffer_overflow 'printf "A"'
printf "A"
所以 printf 没有像我预期的那样工作。
正如 Kumar 和 Gupta 所说,我如何使用“printf”?
当我输入“'printf”\x41“'”时,我的程序如何获得参数“A”?
那是什么printf?它在 python 上起作用吗?还是它与ubuntu集成的程序?
哦,我的 ubuntu 是
root@linaro:~# cat /etc/issue
Ubuntu natty (development branch) \n \l
感谢你们对我的帮助 。