DVWA学习暴力破解low级别

DVWA学习(一)
暴力破解low 级别
if( isset( $_GET[ 'Login' ] ) ) {
// Get username
$user = $_GET[ 'username' ];

// Get password
$pass = $_GET[ 'password' ];
$pass = md5( $pass );

// Check the database
【DVWA学习暴力破解low级别】$query= "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass'; ";
$result = mysql_query( $query ) or die( '

' . mysql_error() . '

' );

if( $result && mysql_num_rows( $result ) == 1 ) {
// Get users details
$avatar = mysql_result( $result, 0, "avatar" );

// Login successful
echo "Welcome to the password protected area {$user}
";
echo "DVWA学习暴力破解low级别
文章图片

若密码错误(die()+没有一条记录)
输出

echo "

Username and/or password incorrect.

";
代码分析:
该代码将输入值直接带入SQL查询,依据返回记录情况判断登陆是否成功。
漏洞利用:
该代码存在SQL注入漏洞,由于没有对输入的字符做任何的过滤便直接带入SQL查询,也就是说可以在输入中构造SQL使其到数据库中查询。
漏洞细节:
admin’ or ‘a’=’a
admin#
对于low级别的理解:
这是low级别的查询语句(单引号是否可忽略)
SELECT * FROM `users` WHERE user = '$user' AND password = '$pass'
若忽略单引号注入替换:
admin or 1=1
带入SQL:
SELECT * FROM `users` WHERE user = ' admin or 1=1' AND password = '$pass'
带入数据库查询的结果:
DVWA学习暴力破解low级别
文章图片

无法查询出结果
带上单引号:
admin’ or ‘a’=’a
带入查询:
SELECT * FROM `users` WHERE user = 'admin’ or ‘a’=’a' AND password = '$pass'
DVWA学习暴力破解low级别
文章图片

注意带入:
Admin’#在数据库中无法查询成功
但是在DVWA中可成功爆破
原因如下:
缺少“; ”
原本的;被#注释掉了
DVWA学习暴力破解low级别
文章图片


    推荐阅读