实验链接
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。
链接:http://www.hetianlab.com/expc.do?ce=9c86ad05-e241-4b2e-8962-f247cde285e7
实验简介
-
实验所属系列:WEB应用安全
-
实验对象: 本科/专科信息安全专业
-
相关课程及专业:信息网络安全概论
-
实验类别:实践实验类
实验目的
-
深入理解sql注入工作原理;
-
怎么去绕过正则表达式实现注入
-
培养学生的独立思考能力
预备知识
给出如下参考链接(也可自己到网上去找相关内容学习): http://www.2cto.com/Article/201208/151503.html
实验环境
浏览器/服务器环境;
服务器配置:apache+php+Mysql;
打开实验网址(http://10.1.1.11:81),可以看到实验练习系统
实验步骤
步骤一
实例四:看仔细点,别被吓坏了
关键代码:
本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明;
首先根据实验一已学知识判断输入数据是否录入数据库:
根据结果可知,输入数据被录入数据库。
接下来用 order by 判断数据库中有5列数据:
既然已经确定五列了,那就用 select by 对这五列信息进行提取:
可以传参,我们尝试提取 name 和 password :
提取成功!
步骤二
实例五:这个规则没多大意义
关键代码:
本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明;
和步骤四的过程相同,结果如下:
查看关键代码可知,输入信息开头为数字即可,我们一开始就输入了 id=1 ,所以未报错,可以正常注入。
开头输入非数字,报错:
步骤三
实例六:想用工具没门
关键代码:
本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明;
同样使用实验四的方法,此时报错:
查看关键代码,可知存在数字匹配。
尝试在末尾加上数字:
此时不报错,那我们用 %23 将数字注释:
注入成功!