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}
逆转原理
- 打乱过程:PHP的
str_shuffle函数内部使用rand()生成随机索引来交换字符位置。对于长度为L的字符串,打乱过程从最后一个字符(索引L-1)开始向前遍历到第二个字符(索引1),对于每个位置i,生成一个随机索引j(0 ≤ j ≤ i),然后交换位置i和j的字符。- 逆转过程:由于随机种子固定,我们可以重现相同的随机序列(即每个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。