Après un peu de debug on voit que c’est juste un réarrangement. J’ai donc testé avec une chaine sans doublon, et utilisé la même transposition sur la chaine à trouver en esperant que ce soit symmétrique. Bingo.
+0x11a if (strcmp(&var_38, "4B}mCuCNJmeVhvCzQusFHS7{2gCBCrQW") != 0)
Ca semblait plus rapide que comprendre la transposition :
+0x0e1 *(&var_38 + modu.dp.q(0:(i * 0x11 + 0x33), var_78_1)) = *(i + &buf)
<?php
$from="abcdefghijklmnopqrstuvwxyzABCDEF";
$to ="DoFqbsdufwhyjAlCnEparctevgxizkBm";
$flagbad="4B}mCuCNJmeVhvCzQusFHS7{2gCBCrQW";
$flagok="";
for($i=0;$i<strlen($from);$i++) {
$idx=strpos($to,$from[$i]);
$flagok.=$flagbad[$idx];
}
print($flagok);
$ php exploit.php
int(32)
FCSC{JgeBhrCWQBsmHu7N2mCVCvQz4u}%