なんでこうなるの?
■ このスレッドは過去ログ倉庫に格納されています
0001ボブ
NGNG{
int uid = 0;
if( setuid(uid) == 0 && setgid(uid) ){
execl("/bin/bash"@`"bash"@`NULL);
exit(1);
else
printf("ぐはは\n");
}これをコンパイルしてsecret_bashと言う名前の実行可能ファイルを作りました。
suidを立てて一般ユーザーnaotoで実行すると次のようになりました
[naoto@ naoto]$ ls -l secret_bash
-rwsr-xr-x 1 root root 36751 Jan 13 17:15 secret_bash*
[naoto@ naoto]$ ./secret_bash
[root@ naoto]# whoami
root
今度はソースのuid = 0 を uid = 500 (naotoのUID)に変え、naotoでコンパイルしました。
出来上がったsecret_bashをユーザーhogeで実行してみました。
[hoge@ hoge]$ ls -l secret_bash
-rwsr-xr-x 1 naoto naoto 36767 Jan 13 17:25 secret_bash*
[hoge@ hoge]$ ./secret_bash
[hoge@ hoge]$ whoami
hoge
hogeがnaoto権限でbashを動かすことを期待していたのですが、うまくいきません。
どうしてなんでしょうか?
暇な人教えてください。
0002名無しさん
NGNGあとchshとか、、、駄目ですかね、、、
by UNIX 管理者見習い
0003Worst King
NGNGin /etc/passwd
nobody:x:65534:100:nobody:/dev/null:
#include<stdio.h>
#include <unistd.h>
main()
{
int uid = 65534@` gid=100;
if( seteuid(uid) == 0 && setegid(uid) ){
fprintf(stdout@`"Yippie! v(^^)v\n");
execl("/bin/bash"@`"bash"@`NULL);
exit(1);}
else
printf("Why? :( \n");
}
nonroot> cc c.c
nonroot> ./a.out
Why? :(
nonroot> su
Password: ***************
# ./a.out
Yippie! v(^^)v
bash$ whoami
nobody
Do you think it's a pain? :)
■ このスレッドは過去ログ倉庫に格納されています