something about DVWA - brute force
DVWA
Brute Force(暴力破解)
Low
选取暴破点
GET /dvwa/vulnerabilities/brute/?username=admin&password=§p§&Login=Login HTTP/1.1
中,
对password
进行暴破。设置payload
Attact type
选择Sniper
,Payloads
选择Runtime file
, 既而选择密码 字典文件(2019_top100.txt
),暴力破解即可。源码分析
直接从
request
中获取参数1
$pass = $_GET[ 'password' ];
直接将参数以字符串的方式拼接入sql
1
$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';";
Medium
选取暴破点
与
Low
级别相同。设置payload
与
Low
级别相同。源码分析
从
request
中获取参数后,使用mysqli_real_escape_string
函数对参数中可能干扰到sql查询的特殊字符进行删除。1
$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)) ? "" : ""));
High
选取暴破点
由于有
token
检测,除了password
暴破点外,还需要设置user_token
暴破点。
GET /dvwa/vulnerabilities/brute/?username=admin&password=§pa§&Login=Login&user_token=§ad5031ef52b181892a11a845db6807b7§ HTTP/1.1
设置Options
由于需要绕过
token
检测,因此需要获取页面请求
时返回的token
值。由于需要先进行
页面请求
,再进行暴破,因此需要用到重定向
。Redirections
中设置Follow redirections:
为Always
在
Options
中,Grep - Extract
中添加一条记录,捕获token
值。
Refetch response
后,选中token
的value
值,burpsuite
会自动生成对应的捕获正则表达式, 添加即可在每次的页面请求response
中捕获对应token
值,用于payload
中。由于绕过
token
需要对每一次的页面请求response
的token
值进行捕获,因此不可以使用多线程。Resource Pool
中自定义Max concurrent requests
为1
的规则。设置payload
Attact type
设置为Pitchfork
后对每个暴破点设置payload
。password
暴破点的payload
正常设置。token
的payload
设置为Recursive grep
,也即使用捕获的token
值。源码分析
检测
token
先进行
token
的检测检测通过,再进行后续操作。1
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
stripslashes
函数过滤参数从
request
中获取参数后,先使用stripslashes
函数去除参数中的\
字符。1
$pass = stripslashes( $pass );
mysqli_real_escape_string
函数过滤参数再使用
mysqli_real_escape_string
函数对参数中可能干扰到sql查询的特殊字符进行删除。1
$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)) ? "" : ""));
Impossible
相比High
级别,增加了尝试次数的限定,超过尝试次数后一段时间内禁止尝试。
1 | // Default values |
something about DVWA - brute force