[英]Get argument char as ASCII code
我正在做我的学校项目“ ARM vs x86上的ROP”
我已经在x86上完成了工作,现在正在ARM上尝试“ ret2zp”,我需要帮助。
请帮助这样的Linux新手。
我在跟随Kumar&Gupta撰写的关于ARM“关于ARM开发的简短指南”的简单明了的示例
在第41页上,(我的声誉不足,无法发布img..sorry)
有一条线
(gdb)r'printf“ AAAABBBBCCCCDDDD \\ x38 \\ x84”
因此Kumar&Gupta尝试将char数组AAAABBBBCCCCDDDD&„(具有扩展的ascii代码。简单的ascii代码上没有任何内容)
而且我无法使用'printf'命令将char数组放在代码的参数上;
这是我使用“ printf”的简单代码。
buffer_overflow.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
感谢你们对我的帮助 。
您使用的是撇号'
而不是反引号`
。 此外,该文档缺少终止反引号。
但是,不要使用反引号,而应使用更好的$()
并正确引用:
./buffer_overflow "$(printf "AAAABBBBCCCCDDDD\x38\x84")"
还要注意,他们是在gdb中而不是在shell中执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.