0
点赞
收藏
分享

微信扫一扫

记一次sql注入测试

圣杰 2023-04-29 阅读 123

SQL 注入是通过在用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为。

常见SQL注入语句$username = 1'or'1'='1$password=1'or'1'='1

$username =1' or '1'='1'))/*$password = foo

http://192.168.254.132/sqli-labs/Less-1/?id=1’ order by 3 --+

这是一个很简单的

$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";

$result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' );

$num = mysql_numrows($result);

比如我们在id = 1,点击

记一次sql注入测试_SQL


稍微懂一点后台或者数据库的人都知道,上面的那段代码是有严重问题的,没有对。也就是说,我们在1' or '1'='1,执行就会变成:

//原先要在数据库中执行的命令SELECT first_name, last_name FROM users WHERE user_id = '1'//变成SELECT first_name, last_name FROM users WHERE user_id = '1' or '1'='1'

注意一下单引号,这是'1'='1让单引号闭合。

由于




记一次sql注入测试_mysql_02



Boolean-based 原理分析

首先不得不讲SQL中的AND和ORAND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。AND:返回第一个条件和第二个条件都成立的记录。OR:返回满足第一个条件或第二个条件的记录。AND和OR即为集合论中的交集和并集。下面是一个数据库的查询内容。

mysql> select * from students;

+-------+-------+-----+| id | name | age |

+-------+-------+-----+

| 10056 | Doris | 20 |

| 10058 | Jaune | 22 || 10060 | Alisa | 29 |

+-------+-------+-----+

3 rows in set (0.00 sec)

1)

mysql> select * from students where TRUE ;

+-------+-------+-----+| id | name | age |

+-------+-------+-----+

| 10056 | Doris | 20 |

| 10058 | Jaune | 22 || 10060 | Alisa | 29 |

+-------+-------+-----+

3 rows in set (0.00 sec)

2)

mysql> select * from students where FALSE ;Empty set (0.00 sec)

3)

mysql> SELECT * from students where id = 10056 and TRUE ;

+-------+-------+-----+| id | name | age |

+-------+-------+-----+| 10056 | Doris | 20 |

+-------+-------+-----+

1 row in set (0.00 sec)

4)

mysql> select * from students where id = 10056 and FALSE ;Empty set (0.00 sec)

解决SQL注入问题的关键是对所有可能来自用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。


举报

相关推荐

0 条评论