L003001015HTTP攻击与防范SQL注入攻击05脚本PHP的SQL注入防护Word文档格式.docx
- 文档编号:17622090
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:14
- 大小:775.11KB
L003001015HTTP攻击与防范SQL注入攻击05脚本PHP的SQL注入防护Word文档格式.docx
《L003001015HTTP攻击与防范SQL注入攻击05脚本PHP的SQL注入防护Word文档格式.docx》由会员分享,可在线阅读,更多相关《L003001015HTTP攻击与防范SQL注入攻击05脚本PHP的SQL注入防护Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
1、学生机要求安装java环境
2、vpc安装windows
实验环境描述
1、学生机与实验室网络直连;
2、VPC1与实验室网络直连;
3、学生机与VPC1物理链路连通;
预备知识
SQL注入被那些菜鸟级别的所谓黑客高手玩出了滋味,发现现在大部分黑客入侵都是基于SQL注入实现的.
现在我开始说如果编写通用的SQL防注入程序一般的http请求不外乎get
和
post.
所以只要我们在文件中过滤所有post或者get请求中的参数信息中非法字符即可,
所以我们实现http
请求信息过滤就可以判断是是否受到SQL注入攻击。
当传递数据后,PHP解析器会分析数据的信息,
然后根据"
&
"
,分出各个数组内的数据所以get的拦截如下:
首先我们定义请求中不能包含如下字符,并进行替换保存到一个phpsqlinj.php文件中,代码如下:
<
?
php
functionphp_sava($str)
{
$farr=array(
/s/"
"
/<
(/?
)(script|i?
frame|style|html|body|title|link|meta|?
|%)([^>
]*?
)>
/isU"
/(<
[^>
]*)on[a-zA-Z]s*=([^>
]*>
)/isU"
);
$tarr=array(
<\1\2\3>"
//如果要直接清除不安全的标签,这里可以留空
\1\2"
$str=preg_replace($farr,$tarr,$str);
return$str;
}
//phpsql防注入代码
classsqlin
//dowith_sql($value)
functiondowith_sql($str)
$str=str_replace("
and"
"
$str);
execute"
update"
count"
chr"
mid"
master"
truncate"
char"
declare"
select"
create"
delete"
insert"
'
or"
="
//echo$str;
//aticle()防SQL注入函数//php教程
functionsqlin()
foreach($_GETas$key=>
$value)
{
$_GET[$key]=$this->
dowith_sql($value);
}
foreach($_POSTas$key=>
$_POST[$key]=$this->
$dbsql=newsqlin();
>
然后在获取form表单内容页面,例如login.php中加入一行代码
include('
phpsqlinj.php'
);
即可.
好了大功告成,我们已经实现了get和post请求的信息拦截,你只需要在conn.asp之类的打开数据库文件之前引用这个页面即可。
放心的继续开发你的程序,不用再考虑是否还会受到SQL注入攻击。
实验内容
1、
掌握SQL注入基本手段
2、
了解WEB站点的脆弱性
3、
修复存在SQL注入可能的漏洞
实验步骤
●实验操作
1、学生单击实验拓扑按钮,进入实验场景,(第一次启动目标主机,还需要安装java控件)。
,
2、学生输入账号Administrator,密码123456,登录到实验场景中的目标主机。
如图所示:
3、打开IE浏览器,输入http:
//127.0.0.1:
8080,即可登录如图所示页面:
4、假设我们知道用户名为:
aaaaaa,密码:
111111。
我们输入正确的用户名和密码如图所示:
5、漏洞尝试:
在对一个网站进行安全检测的时候,检测者并不知道被检测的网站使用的是什么数据库及网页程序语言,需要对其进行一些手动探测。
譬如本案例中,检测者在“用户”框输入一个单引号,密码留空,点击“登录”,会返回如图所示:
6、结果分析:
从返回信息“Warning:
mysql_fetch_row()expectsparameter1toberesource,booleangiveninC:
\xampp\htdocs\test\login.phponline24”可以得知系统使用了PHP+MYSQL的架构,以及路径信息等。
而且很有可能存在含注入漏洞的SQL语句,如SELECT*FROMuser_loginWHEREu_id=’’’。
7、在登陆界面中,选择IE浏览器的查看源文件,读取html源码,如图所示:
8、.
通过分析html源码,可以知道提交的username、password字段及post提交方式,及login.php的处理页面,后台的SQL语句确定是:
SELECT*FROMuser_loginWHEREu_id=’$username’
9、所以,当我们输入用户名为单引号时,形成了
SELECT*FROMuser_loginWHEREu_id=’’’
这样以来,最后的那个单引号就多余了,造成了语法错误。
综上所述,我们现在可以确定注入成功的条件了,登陆时username输入框输入如下内容即可,甚至不需要输入密码:
aaaaaa'
or'
1=1
【注释】
aaaaaa’
or1=1/*构建了SELECT*FROM`user_login`WHERE`u_id`='
or'
1=1'
AND`passwd`='
语句,直接通过1=1的恒等条件,让验证通过。
10、进入c:
\xampp\htdocs文件夹
11、使用Ultraedit打开c:
\xampp\htdocs\login.php文件。
12、去掉//include(‘phpsqlinj.php’);
行
//
13、输入:
8080/index.html,并输入用户名:
aaaaaa’or‘1=1,密码:
111111
点击登陆进行验证.
14、验证发现
u_id=aaaaaa11
并出错,说明sql防注入成功。
15、实验完毕,关闭虚拟机和所有窗口。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- L003001015HTTP 攻击 防范 SQL 注入 05 脚本 PHP 防护
链接地址:https://www.bdocx.com/doc/17622090.html