prize


grandmas_notes

看源码可知会提示密码前几位的正确性。burp攻击,记得开重定向,减缓攻击速度,即可爆出admin密码。

abcdefghijklmnopqrstuvwxyz0123456789ZAQWSXCDERFVBGTYHNMJUIKLOP

belike

最后是YzUnh2ruQix9mBWv


pwgen

deepseek秒了

先访问 /?nthpw=1拿到一个字符串

<?php
// 将打乱后的字符串粘贴在这里
$shuffled = "7F6_23Ha8:5E4N3_/e27833D4S5cNaT_1i_O46STLf3r-4AH6133bdTO5p419U0n53Rdc80F4_Lb6_65BSeWb38f86{dGTf4}eE8__SW4Dp86_4f1VNH8H_C10e7L62154";
$L = strlen($shuffled);

// 初始化随机种子
srand(0x1337);

// 记录对于每个 i 从 L-1  down to 1 的 j_i 值
$j_values = array();
for ($i = $L-1; $i >= 1; $i--) {
    $j = rand(0, $i);
    $j_values[$i] = $j;
}

// 将打乱后的字符串转换为数组
$arr = str_split($shuffled);

// 逆交换过程:对于 i 从 1 到 L-1
for ($i = 1; $i <= $L-1; $i++) {
    $j = $j_values[$i];
    // 交换位置 i 和 j
    $temp = $arr[$i];
    $arr[$i] = $arr[$j];
    $arr[$j] = $temp;
}

$original = implode('', $arr);
echo $original;
?>
    
    
#ENO{N3V3r_SHUFFLE_W1TH_STAT1C_S333D_OR_B4D_TH1NGS_WiLL_H4pp3n:-/_0d68ea85d88ba14eb6238776845542cf6fe560936f128404e8c14bd5544636f7}    

逆转原理

  1. 打乱过程:PHP的str_shuffle函数内部使用rand()生成随机索引来交换字符位置。对于长度为L的字符串,打乱过程从最后一个字符(索引L-1)开始向前遍历到第二个字符(索引1),对于每个位置i,生成一个随机索引j(0 ≤ j ≤ i),然后交换位置i和j的字符。
  2. 逆转过程:由于随机种子固定,我们可以重现相同的随机序列(即每个i对应的j值)。为了还原打乱,我们需要以相反的顺序应用相同的交换操作。即从i=1到i=L-1(递增顺序)进行交换,每次交换位置i和存储的j值对应的位置。这样逐步还原每次交换,最终得到原始字符串。

步骤解释

  • 首先,通过访问/?nthpw=1获取打乱后的字符串(例如:Your password is: '打乱后的字符串')。
  • 然后,使用提供的PHP脚本逆转打乱过程:
    • 脚本设置相同的随机种子(srand(0x1337))。
    • 生成随机序列(j_values),存储每个i对应的j值(i从L-1 down to 1)。
    • 将打乱后的字符串转换为数组。
    • 从i=1到i=L-1循环,每次交换位置i和j_values[i]的字符。
    • 最终输出还原后的原始flag。


文章作者: q1n9
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 q1n9 !
  目录