通过 SQL 注入攻击,掌握网站的工作机制,认识到 SQL 注入攻击的防范措施,加强对 Web 攻击的防范。
一、实验环境
(1) 下载并安装WAMP,文件夹下的wampserver2.2d32位
(2) 运行python漏洞利用脚本的环境,需要安装selenium库及浏览器对应的ChromeDriver版本
二、实验准备
(1)了解网站的运行机制和原理。
(2)了解 asp、php、jsp 或者 asp.net 语言的工作原理。
(3)熟悉数据库 SQL 语言。
(4)在 Internet 上搜索 SQL 注入的相关文章,学习 SQL 注入的原理和方法。
三、实验内容
通过模拟 SQL 注入攻击获得某网站后台登陆密码。
(1)通过本地服务器搭建模拟网站。
(2)测试其是否存在SQL注入漏洞,进行模拟攻击。
(3)获得后台数据库中的存储网站用户和密码的数据表。
(4)获得其中一对用户名和密码。
(6)用获得的用户名和密码验证是否能够登陆。
(7)为这个网站的SQL注入漏洞提出解决方案和防范方法。
(8)使用seleium库撰写python爬虫脚本,自动获取SQL管理员的用户名和密码。
四、WAMP服务器搭建步骤
1. 安装wamp,启动所有服务,“start all services”
2. 通过phpmyadmin,新建数据库test,创建admin管理员账号表,并添加相应的账户名和密码(或者可以直接导入admin.sql)
3. 将login.php和verify.phpf放入wamp的www文件夹
其中login.php如下:
Sql注入演示Sql注入演示
用户名: | |
密 码: | |
verify.php如下:
登录验证$conn=@mysql_connect('127.0.0.1:3306','root','') or die("数据库连接失败!");
mysql_select_db("test",$conn) or die("您要选择的数据库不存在");//修改成数据名,此处为test
$name=$_POST['username'];
$pwd=$_POST['password'];
$sql="select * from admin where username='$name' and password='$pwd'";//修改成表名,此处为users
$query=mysql_query($sql);
$arr=mysql_fetch_array($query);
if(is_array($arr)){
echo "";
}else{
echo "您的用户名或密码输入有误,请重新登录!";
}
?>
浏览器打开http://localhost/login.php即可看到登录页面。
五、SQL注入的详细步骤
1. 验证存在SQL注入漏洞
用户名输入’ or 1=1#密码无论输入什么,均可以正确登陆: