others_shellcode
题目链接:others_shellcode。
下载附件后,使用 IDA 反编译,定位到主要函数,如下。
int getShell()
{
int result; // eax
char v1[9]; // [esp-Ch] [ebp-Ch] BYREF
strcpy(v1, "/bin//sh");
result = 11;
__asm { int 80h; LINUX - sys_execve }
return result;
}
对应的汇编代码如下。
.text:00000550 push ebp
.text:00000551 mov ebp, esp
.text:00000553 call __x86_get_pc_thunk_ax
.text:00000558 add eax, (offset _GLOBAL_OFFSET_TABLE_ - $)
.text:0000055D xor edx, edx ; envp
.text:0000055F push edx
.text:00000560 push 'hs//'
.text:00000565 push 'nib/'
.text:0000056A mov ebx, esp ; file
.text:0000056C push edx
.text:0000056D push ebx
.text:0000056E mov ecx, esp ; argv
.text:00000570 mov eax, 0FFFFFFFFh
.text:00000575 sub eax, 0FFFFFFF4h
.text:00000578 int 80h ; LINUX - sys_execve
.text:0000057A nop
.text:0000057B pop ebp
.text:0000057C retn
可以看到,程序直接执行了 execve 系统调用,并且参数为 "/bin/sh"。
因此,直接使用 nc 连接题目环境即可 GetShell。

浙公网安备 33010602011771号