第一天 (5.15)
一如既往的早餐 国哥详细讲解APPSCAN
第二天 (5.16)
有会议... 一起帮公司布置会场;
第三天 (5.17)
国哥家中有事没来,我们两个小组充分讨论了今后的学习发展方向;
第四天 (5.18)
课程表 SQL注入实战; 梁爽姐姐讲解SQL;
SOL注入:
e.g.
var Var1;
Var1 = Request.form ("Var1");
var sql = " select * from MYTable where Var1 = ' " + Var1 + " ' ";
If Input: Ares
SELECT * FROM MYTable WHERE Var1 = ' Ares ';
Else if Input: Ares '; drop table MYTable--
SELECT * FROM MYTable WHERE Var1 = ' Ares '; drop table MYTable-- '
Else if Input: '
SELECT * FROM MYTable WHERE Var1 = ' ' ';
不匹配!!
从返回错误信息可知 服务器信息 与 SQL语句结构。。
review 2 conditions of SQL Injection:
1) user can decide Input;
2) codes match the Input.
第五天 (5.19)
在Windows下运行DVWA SQL注入: 建议装Kali系统[周末 (5.20-5.21)
运行 XAMPP, 启动 Apache, MySQL:
在 Chrome 地址栏 输入: localhost/DVWA/setup.php
发现错误:
(1)PHP function allow_url_include disabled
(2)Could not connect to the mysql service. please check the config file
状态全部完成了
哈哈。。
初心者, 在 DVWA Security 选择 Low:
Security level is currently: low.
SQL Injection
id:1
id的值是我们可以控制的
猜测SQL
SELECT name, surname FROM users WHERE id = '1' ...
输入 1'
返回
You have an error in your SQL syntax;
check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1''' at line 1
可以看到使用的数据库和特定SQL语句的部分结构。
注意使用英文符号, 中文符号会被略过:
Input: 1'-- // 用注释符 -- 将SQL语句后半部分注释掉
可见如果直接将用户输入动态拼装进SQL语句,会有很大风险
作为网络安全测试员,为了杜绝SQL注入,我们应注意:
对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。
为避免出现以上状况,我们要注意:
1. 不使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取; //这周实验的要点
2. 不使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接;
3. 不要把机密信息直接存放,加密或者hash掉密码和敏感的信息;
4. 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装.
注: sql注入的检测方法一般采取辅助或网站平台来检测,软件一般采用 SQL 注入检测工具 SQLmap 或者 jsky, 网站平台有亿思网站安全平台检测工具。