1、提交登录请求,抓包
2、发送给Intruder模块进行处理
3、需要爆破的是用户名和密码的字段,因此选择cluster bomb模式
4、对用户名和密码字段相对应的payload手工添加字典,如果有字典top100,直接导入即可
Payload 1对应的是用户名
Payload 2对应的是密码
5、点击 start attack,开始爆破
这次跑字典的速度有点慢,总共也就36种可能
6、找长度最特殊的一项,手工登录验证
用户名为admin,密码为test
登录成功!!!
7、总结一下
感觉这个爆破过程与低难度的没啥区别啊,都是一样的步骤
源代码需要看看,看不懂也要看,多查多问
<?php
if( isset( $_GET[ ‘Login’ ] ) ) {
// Sanitise username input
$user = $_GET[ ‘username’ ];
$user = ((isset($GLOBALS[“___mysqli_ston”]) && is_object($GLOBALS[“___mysqli_ston”])) ? mysqli_real_escape_string($GLOBALS[“___mysqli_ston”], $user ) : ((trigger_error(“[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.”, E_USER_ERROR)) ? “” : “”));// Sanitise password input
$pass = $_GET[ ‘password’ ];
$pass = ((isset($GLOBALS[“___mysqli_ston”]) && is_object($GLOBALS[“___mysqli_ston”])) ? mysqli_real_escape_string($GLOBALS[“___mysqli_ston”], $pass ) : ((trigger_error(“[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.”, E_USER_ERROR)) ? “” : “”));
$pass = md5( $pass );// Check the database
$query = “SELECT * FROM `users` WHERE user = ‘$user’ AND password = ‘$pass’;”;
$result = mysqli_query($GLOBALS[“___mysqli_ston”], $query ) or die( ‘<pre>’ . ((is_object($GLOBALS[“___mysqli_ston”])) ? mysqli_error($GLOBALS[“___mysqli_ston”]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . ‘</pre>’ );if( $result && mysqli_num_rows( $result ) == 1 ) {
// Get users details
$row = mysqli_fetch_assoc( $result );
$avatar = $row[“avatar”];// Login successful
echo “<p>Welcome to the password protected area {$user}</p>”;
echo “<img src=\”{$avatar}\” />”;
}
else {
// Login failed
sleep( 2 );
echo “<pre><br />Username and/or password incorrect.</pre>”;
}((is_null($___mysqli_res = mysqli_close($GLOBALS[“___mysqli_ston”]))) ? false : $___mysqli_res);
}?>
可以看到,medium级别的代码对用户输入的参数进行了简单的过滤,对一些预定义字符进行了转义,基本上防止了SQL注入。还有一个措施就是如果密码输错了,则延时两秒之后才能再次提交,如果亲手体验,确实能发现爆破时长变长了些,没有那么快跑完手工写的字典。
mysqli_real_escape_string(string,connection) :函数会对字符串string中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义,基本可以抵抗SQL注入。
$GLOBALS :引用全局作用域中可用的全部变量。不懂就百度,自行了解。
心理路程:知道这里大佬专家多,我写这些,只是记录自己学习的过程,不懂就多操作。
来源:freebuf.com 2020-10-10 15:24:40 by: fu福lin林
请登录后发表评论
注册