第一天 (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

打开/xampp/php/php.ini,找到
allow_url_include=Off
改为
allow_url_include=On

(2)Could not connect to the mysql service. please check the config file

打开/xampp/htdocs/dvwa/config/config.inc.php,将
$_DVWA['db_user'] = 'root'$_DVWA[''db_password] = 'p@ssw0rd'
改为
$_DVWA[ 'db_user' ] = 'root';$_DVWA[ 'db_password' ] = '';  //mysql的默认用户名和密码
 
(3)reCAPTCHA key:Missing
打开/xampp/htdocs/dvwa/config/config.inc.php,将
$_DVWA[ 'recaptcha_public_key' ] = '';$_DVWA[ 'recaptcha_private_key' ] = '';
改为
$_DVWA[ 'recaptcha_public_key' ] = '6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg';$_DVWA[ 'recaptcha_private_key' ] = '6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ';

 

状态全部完成了

 

 

 哈哈。。

 

 

初心者, 在 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, 网站平台有亿思网站安全平台检测工具。

posted on 2017-05-19 08:24  E-C-Ares  阅读(155)  评论(0编辑  收藏  举报