学校のプロジェクト「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"
があります。 . 単純な 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 が機能しません。
クマールとグプタがそう言ったように、「printf」をどのように使用できますか??
"'printf "\x41"'" を入力したときに、プログラムが引数 "A" を取得するにはどうすればよいですか?
そのprintfは何ですか?それはPythonで何か機能していますか?それともubuntuと統合されたプログラムですか?
ああ、私のubuntuは
root@linaro:~# cat /etc/issue
Ubuntu natty (development branch) \n \l
助けてくれてありがとう 。