文档OCR全链路:从扫描件预处理到字段抽取与批量续跑
2026/10/24 5:43:35
intruder模块进行操作username和passwordusername和password添加变量,使用cluster bomb模式攻击即可,右侧添加爆破的值发送攻击后通过长度判断出用户名和密码
这里我自己尝试探测是否存在sql注入,使用sqlmap工具可测试username字段(注意:携带cookie)
username和password字段添加变量,设置攻击类型为cluster bomb模式mysqli_real_escape_string()函数对用户输入的内容做了转义,但这是暴力破解密码,不起任何作用user_token值(即token),其他都没有变化token值有哪些属性(一次性,随机性)password和user_token字段添加变量,cluster bomb模式password设置不变token在服务器发送的响应文件中,那就通过正则表达是提取添加在设置中找到检索-提取选项,点击添加通过burp中自带的查找模块查找
在弹出框中输入token后选中vlue后的值(复制后续使用),就能找获取正则表达式了
在将重定向跳转改为总是
将payload类型选为递归提取,添加初始值,请求次数设置为1后就可以攻击了
mysqli_real_escape_string()函数对用户输入的内容做了转义,但这是暴力破解密码,不起任何作用// 这一关的代码比较多,这里列举重点的部分1.token的校验if(isset($_POST['Login'])&&isset($_POST['username'])&&isset($_POST['password'])){checkToken($_REQUEST['user_token'],$_SESSION['session_token'],'index.php');2.账号锁定// Default values$total_failed_login=3;// 最大失败登录次数:3次$lockout_time=15;// 锁定时间:15分钟$account_locked=false;// 账号锁定标记// 查数据库:获取用户失败登录次数、最后登录时间$data=$db->prepare('SELECT failed_login, last_login FROM users WHERE user = (:user) LIMIT 1;');$data->bindParam(':user',$user,PDO::PARAM_STR);$data->execute();$row=$data->fetch();// 检查账号是否因多次失败被锁定if(($data->rowCount()==1)&&($row['failed_login']>=$total_failed_login)){$last_login=strtotime($row['last_login']);// 最后失败登录时间(时间戳)$timeout=$last_login+($lockout_time*60);// 解锁时间 = 最后失败时间 + 15分钟$timenow=time();// 当前时间戳// 未到解锁时间 → 标记账号锁定if($timenow<$timeout){$account_locked=true;}}// 验证账号密码(PDO 预编译)$data=$db->prepare('SELECT * FROM users WHERE user = (:user) AND password = (:password) LIMIT 1;');$data->bindParam(':user',$user,PDO::PARAM_STR);$data->bindParam(':password',$pass,PDO::PARAM_STR);$data->execute();$row=$data->fetch();