私はubuntu12のターミナルを使用してこれをコンパイルしようとしています:
#include <stdio.h>
#include <stdlib.h>
main()
{
/*declare argument array*/
char *args[2];
args[0] = “/bin/bash”;
args[1] = NULL;
execve(args[0], args, NULL);
exit(0);
}
この例はhttp://www.securitytube.net/video/235で見つけました。これは、AlephOneが「SmashingtheStack forFunandProfit」で使用したものでもあります。それ以来、多くの変化があったことを私は知っています。より簡単な例では、次のように使用しました。
gcc -ggdb -mpreferred-stack-boundary = 2 -fno-stack-protector filename filename.c
また、静的ユーティリティを含める場合もあります。上記のCコードをコンパイルしようとするまではうまくいきました。ターミナルから受け取るメッセージは次のとおりです。
ss@ss-laptop:~$ gcc -static -mpreferred-stack-boundary=2 -fno-stack-protector -o shell shell.c
shell.c: In function ‘main’:
shell.c:9:2: error: stray ‘\342’ in program
shell.c:9:2: error: stray ‘\200’ in program
shell.c:9:2: error: stray ‘\234’ in program
shell.c:9:15: error: expected expression before ‘/’ token
shell.c:9:15: error: stray ‘\342’ in program
shell.c:9:15: error: stray ‘\200’ in program
shell.c:9:15: error: stray ‘\235’ in program
ss@ss-laptop:~$
これは非常に単純な例であり、このエラーはおそらくLinuxの現在の標準的なセキュリティ対策が原因であると理解していますが、今後はこの例などを使って練習していきたいと思います。誰かが助けることができれば、それは「粉砕」になります。
乾杯