SQL注入攻击实验报告_林凯杰_200930601340

合集下载

SQL注入攻击实验报告

SQL注入攻击实验报告

SQL注入攻击1、理论:所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

具体来说,它是利用现有应有程序,将(恶意的)SQL 命令注入到后台数据库引擎执行的能力,它可以通过在web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句2、实验流程:建数据库-代码-简单攻击3、准备:phpstudy(其中包括apache\php\sql)4、总体思路:1.寻找到SQL注入的位置2.判断服务器类型和后台数据库类型3.针对不同的服务器和数据库特点进行SQL注入攻击5、大致讲解:比如在一个登录界面,要求输入用户名和密码,可以这样输入实现免帐号登录:用户名:‘or 1 = 1 –-密码:点登陆,如若没有做特殊处理,那么这个非法用户就很得意的登陆进去了.(当然现在的有些语言的数据库API已经处理了这些问题)这是为什么呢?从理论上说,后台认证程序中会有如下的SQL语句:String sql = "select * from user_table where username= ' "+userName+" ' and password=' "+password+" '";当输入了上面的用户名和密码,上面的SQL语句变成:SELECT * FROM user_table WHERE username='’or 1 = 1 -- and password='’分析SQL语句:条件后面username=”or 1=1 用户名等于” 或1=1 那么这个条件一定会成功;然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用,这样语句永远都能正确执行,用户轻易骗过系统,获取合法身份。

SQL注入攻击实验报告

SQL注入攻击实验报告

SQL注入攻击报告院系:计算机与通信工程学院班级:信息安全10-02班实验目的通过SQL注入攻击,掌握网站的工作机制,认识到SQL注入攻击的防范措施,加强对Web 攻击的防范。

1.实验内容通过模拟SQL注入攻击获得某网站后台登陆密码。

(1)端正学习目的,禁止恶意入侵,不可对他人网站造成不良影响。

(2)寻找Internet上用ASP、PHP、JSP或者语言编写的动态网站,测试其是否存在SQL 注入漏洞,选择一个可能存在漏洞的网站进行模拟攻击。

(3)获得后台数据库中的存储网站用户和密码的数据表。

(4)获得其中一对用户名和密码。

(5)找到登陆后台系统的网页路径,用获得的用户名和密码验证是否能登陆。

(6)为这个网站的SQL注入漏洞提出解决方案和防范办法。

3.实验步骤解攻击方法在地址栏: and 1=1查看漏洞是否存在,如果存在就正常返回该页,如果没有,则显示错误,继续假设这个站的数据库存在一个admin表在地址栏: and 0<>(select count(*) from admin)返回页正常,假设成立了。

下面来猜猜看一下管理员表里面有几个管理员ID:and 1<(select count(*) from admin)页面什么都没有。

管理员的数量等于或者小于1个and 1=(select count(*) from admin)输入=1没显示错误,说明此站点只有一个管理员。

下面就是要继续猜测admin 里面关于管理员用户名和密码的字段名称。

and 1=(select count(*) from admin where len(username)>0)用户名称字段猜解完成之后继续猜解密码字段and 1=(select count(*) from admin where len(password)>0)password 字段存在!我们已经知道了管理员表里面有3个字段 id,user,password。

sql注入实验报告.

sql注入实验报告.
(8)数据敏感信息非常规加密,通过在程序中对口令等敏感信息加密都是采用md5函数进行加密,即密文=md5(明文),本文推荐在原来的加密的基础上增加一些非常规的方式,即在md5加密的基础上附带一些值,如密文=md5(md5(明文)+123456);
三、实验步骤
1、查看Web程序的数据库
打开浏览器输入:“http:本地ip/phpmyadmin/”
无密码登录成功
无用户名无密码的登录
使用“1=1”这条恒成立的语句,可以在缺少更多信息的情况下,成功登录。
url参数:“?username=z'or'1=1'%23”
图:无用户名无密码登录成功
在服务器生成用户信息文件
导出文件到Web服务器的tmp目录。
数据库中的user表被导出到Ubuntu服务器的tem目录。
WebApp目录图
3、在打开的登录模块access.php此模块使用GET提交信息,可以通过URL发送参数登录
使用数据表user中存在的用户名和密码Username=bluedon password=mypass是数据库存在的用户信息URL参数“?username=bluedon&password=mypass”,将第这条url参数复制到链接之后,回车确定。
现在远程登录Web服务器(linux靶机),查看tmp目录下的文件。
“Places”>“Desktop”>“File System”>“tmp”
图1
图2
SQL注入前,tmp目录下不存在“sss.txt ”文件
图:查看是否存在生成文件
使用url参数“?username=’ or 1=1 into outfile ’/tmp/sss.txt’%23”

中山大学实验3-SQL注入攻击实验

中山大学实验3-SQL注入攻击实验

1.实验报告如有雷同,雷同各方当次实验成绩均以0分计。

2.当次小组成员成绩只计学号、姓名登录在下表中的。

警示3.在规定时间内未上交实验报告的,不得以其他方式补交,当次成绩按0分计。

4.实验报告文件以PDF格式提交。

院系班级组长学号学生实验分工SQL注入攻击实验【实验目的】了解SQL注入攻击的过程。

通过SQL注入攻击,掌握网站的工作机制,认识到SQL注入攻击的危害,加强对Web攻击的防范。

禁止恶意入侵,不可对他人网站造成不良影响。

建议自行搭建简易网站进行实验。

【实验原理】结构化查询语言SQL是一种用来和数据库交互的文本语言,SQL注入就是利用某些数据库的外部接口把用户数据插入到实际的数据库操作语言当中,从而达到入侵数据库乃至操作系统的目的。

它的产生主要是由于程序对用户输入的数据没有进行细致的过滤,导致非法数据的导入查询。

在下面的攻击实验中,需要用到wed.exe和wis.exe两个命令行工具(从网络上下载),其中wis.exe 用于扫描某个站点中是否存在SQL注入漏洞;wed.exe是用于破解SQL注入用户名和密码。

将两个工具结合起来,就可以体验从寻找注入点到注入攻击完成的整个过程。

【实验过程】(给出实验使用的真实网址,测试需要贴出适当的截图)(1)判断环境,寻找注入点使用wis.exe寻找注入漏洞,其使用格式:wis 网址例如,检测某个网址/,首先进入命令提示窗口,然后输入命令:wis /命令输入结束后,单击回车键,即可开始扫描。

注意命令格式,在输入网址时,网址需放在http://和/之间,否则扫描无法进行。

你找到有SQL注入漏洞的网站是:(2)查看SQL注入攻击漏洞扫描结束后,可以看到网站上有否存在SQL注入攻击漏洞。

漏洞信息一般以红色字体显示,以“SQL Injection Format”开头的那些行。

假设扫描后其中某行如下:SQL Injection Format:/xygk.asp?typeid=34&bigclassid=98这是特征明显的数据库查询语句,可以选择其来做破解用户名和密码实验。

sql注入的实验总结

sql注入的实验总结

sql注入的实验总结
SQL注入是一种常见的安全漏洞,利用它可以对数据库进行非法访问和操作。

在进行SQL注入的实验过程中,我学到了一些重要的知识和经验。

首先,我学习了SQL注入的原理。

SQL注入是通过将恶意代码插入到应用程序的SQL查询中来实现的。

当应用程序没有对用户输入的数据进行充分验证和过滤时,攻击者可以利用这个漏洞将恶意代码注入到应用程序的SQL查询中,从而执行恶意操作。

其次,我学会了如何检测和利用SQL注入漏洞。

在实验中,我使用了一些常用的技术和工具,如手工注入、使用单引号、分析错误信息等。

通过这些方法,我可以发现应用程序中的SQL注入漏洞,并尝试利用这些漏洞来获取敏感信息或者修改数据库的数据。

另外,我也了解到了如何预防SQL注入漏洞。

在实验过程中,我发现了一些常见的防御措施,如使用参数化查询、输入验证和过滤、最小权限原则等。

这些措施可以有效地防止SQL注入攻击,增加应用程序的安全性。

在实验中,我还发现了一些SQL注入的常见攻击场景。

例如,登录页面、搜索功能、用户注册等都是攻击者经常利用的入口点。

通过对这些场景进行实验,我更好地理解了SQL注入攻击的实际应用场景,并且能够更好地保护应用程序的安全。

总之,SQL注入是一种常见的安全漏洞,在进行相关实验的过程中,我学到了很多关于SQL注入攻击的知识和技巧。

通过了解SQL注入的原理、检测和利用方法,以及防御措施,我可以更好地保护应用程序的安全,并且在开发过程中避免这类漏洞的出现。

SQL注入实验报告

SQL注入实验报告

SQL注⼊实验报告实验项⽬SQL注⼊综合性实验2020年9⽉25⽇⼀、实验综述1.实验⽬的及要求创建VMWARE虚拟机 的Windows环境,在虚拟机中安装phpstudy,并搭建DVWA环境,通过学习web⼯作原理与SQL注⼊⼯作原理,能够实现简单的SQL注⼊验证。

2.实验仪器、设备或软件VmwareDVWAphpStudy3.实验原理(1)Web⼯作原理:Web服务器的本质就是 接收数据 ⇒ HTTP解析 ⇒ 逻辑处理 ⇒ HTTP封包 ⇒ 发送数据。

Web服务器的⼯作流程:1)⽤户做出⼀个操作,可以是填写⽹址敲回车,可以是点链接,接着通过浏览器获取事件。

2)浏览器通过TCP三次握⼿与服务器程序连接3)浏览器将⽤户事件按照HTTP格式打包成⼀个数据包,其实质就是在待发送缓冲区中的⼀段有着HTTP协议格式的字节流。

4)浏览器确认对端可写,并将该数据包推⼊internet,该包经过⽹络最终递交到服务器程序。

5)服务端拿到该数据包后,同样以HTTP协议格式解包,解析客户端的意图。

6)得知客户端意图后,进⾏分类处理,或者提供某种⽂件、或者处理数据。

7)返回结果,将结果装⼊缓冲区,或是HTML⽂件、或是⼀张图⽚等。

8)按照HTTP协议格式将返回结果的数据包进⾏打包处理。

9)服务器确认对端可写,并将该数据包推⼊Internet,该包经过⽹络最终递交到客户端。

10)浏览器拿到包后,以HTTP协议格式解包,然后解析数据,如:是HTML⽂件11)浏览器将HTML⽂件展⽰在页⾯上。

Web服务器的⼯作流程(GET请求)Web服务器最主要的功能就是提供静态⽂件。

⽇常的上⽹浏览⼤多为⽹页浏览。

在GET请求下的⽂本服务器⼯作原理如下:主要步骤基本不变,只有第1)步、第6)步和第7)步有些不同。

第1)步:当⽤户点击⼀个⽹页链接或浏览器加载⼀些资源(css,jpg …)时产⽣。

第6)步:服务程序解包后,确定其为GET请求,并且是对该服务器上的某⼀资源的请求。

SQL注入攻击实验

SQL注入攻击实验

课外实践作业一:SQL注入实验(1) 实验描述在本次实验中,我们修改了phpBB的web应用程序,并且关闭了phpBB实现的一些对抗SQL注入的功能。

因而我们创建了一个可以被SQL注入的phpBB版本。

尽管我们的修改是人工的,但是它们代表着web开发人员的一些共同错误。

学生的任务是发现SQL注入漏洞,实现攻击者可以达到的破坏,同时学习抵挡这样的攻击的技术。

(2) 实验环境SEED Ubuntu镜像●环境配置实验需要三样东西,Firefox、apache、phpBB2(镜像中已有):①运行Apache Server:镜像已经安装,只需运行命令%sudo service apache2 start②phpBB2 web应用:镜像已经安装,通过访问,应用程序源代码位于/var/www/SQL/SQLLabMysqlPhpbb/③配置DNS:上述的URL仅仅在镜像内部可以访问,原因是我们修改了/etc/hosts文件使指向本机IP 127.0.0.1。

如果需要在其他机器访问,应该修改hosts文件,使URL映射到phpBB2所在机器的IP。

●关闭对抗措施PHP提供了自动对抗SQL注入的机制,被称为magic quote,我们需要关闭它。

1.找到/etc/php5/apache2/php.ini2.找到magic_quotes_gpc = On这一行3.改为magic_quotes_gpc = Off4.重启Apache:”sudo service apache2 restart”●Note for Instructors最好拥有一些背景知识1.使用虚拟机,Firefox的插件LiveHttpHeaders和Tamper Data2.对SQL语句的一些了解3.如何操作MySQL数据库4.对PHP一些了解(3) 实验任务①对SELECT语句的攻击此次任务,你需要通过访问虚拟机内的URL:。

在进入phpBB 之前系统会要求你登陆。

sql注入攻击实训总结

sql注入攻击实训总结

sql注入攻击实训总结
SQL注入攻击是一种通过在Web应用程序的输入数据中添加恶意的SQL查询语句来执行未经授权的查询或操作的攻击方式。

以下是SQL注入攻击实训的总结:
1. 熟悉Web应用程序的漏洞和攻击方式:在实训中,学生需要熟悉Web应用程序中的漏洞和攻击方式,包括输入参数的过滤和验证、SQL注入、XSS攻击等。

2. 选择合适的攻击场景:在实训中,学生需要选择不同的攻击场景,例如通过输入参数注入恶意SQL语句、通过文件上传漏洞注入恶意SQL语句等。

3. 设计SQL注入攻击方案:在实训中,学生需要根据选择的漏洞和攻击场景,设计SQL注入攻击方案,包括SQL语句的设计、参数的填充和验证等。

4. 实现SQL注入攻击:在实训中,学生需要使用Python等编程语言实现SQL注入攻击,包括输入参数的过滤和验证、SQL语句的拼接和填充等。

5. 验证和调试攻击效果:在实训中,学生需要对攻击效果进行验证和调试,包括检查攻击是否成功、检查攻击语句是否包含恶意参数等。

6. 学习安全知识:在实训中,学生需要学习安全知识,包括Web 应用程序的安全设计原则、安全编码规范、访问控制等。

7. 实践项目:在实训中,学生需要实践项目,将所学知识和技能
应用到实际攻击场景中,提高自己的实战能力和水平。

SQL注入攻击实训是一个复杂的任务,需要学生具备扎实的编程和Web应用程序知识,同时也需要具备一定的安全意识和应变能力。

在实训中,学生需要不断探索和实践,不断完善自己的攻击方案和安全措施,提高自己的安全水平。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL注入攻击实验【实验要求】1)Sql注入攻击的实现与防御,其中防御模块为可选作部分。

2)要求:提交源代码和可执行文件,提供用户使用文档和实验报告文档(包括开发环境、运行主要截图、实验收获等说明)。

【实验原理】1、结构化查询语言(SQL)是一种用来和数据库交互的文本语言,SQL Injection就是利用某些数据库的外部接口把用户数据插入到实际的数据库操作语言当中,从而达到入侵数据库乃至操作系统的目的。

它的产生主要是由于程序对用户输入的数据没有进行细致的过滤,导致非法数据的导入查询。

2、SQL注入攻击主要是通过构建特殊的输入,这些输入往往是SQL语法中的一些组合,这些输入将作为参数传入Web应用程序,通过执行SQL语句而执行入侵者的想要的操作,一般想要攻击成功,需要做到以下三点:1)确定Web应用程序所使用的技术:注射式攻击对程序设计语言或者硬件关系密切,但是这些可以通过适当的踩点或者索性将所有常见的注射式攻击都搬出来逐个试一下就知道了。

为了确定所采用的技术,攻击者可以考察Web页面的页脚,查看错误页面,检查页面源代码,或者使用诸如Nessus等工具来进行刺探。

2)确定所有可能的输入方式:Web应用的用户输入方式比较多,其中一些用户输入方式是很明显的,如HTML表单;另外,攻击者可以通过隐藏的HTML表单输入、HTTP头部、cookies、甚至对用户不可见的后端AJAX请求来跟Web应用进行交互。

一般来说,所有HTTP的GET和POST都应当作用户输入。

为了找出一个Web 应用所有可能的用户输入,我们可以求助于Web代理,如Burp等。

3)查找可以用于注射的用户输入:在找出所有用户输入方式后,就要对这些输入方式进行筛选,找出其中可以注入命令的那些输入方式。

这个任务好像有点难,但是这里有一个小窍门,那就是多多留意Web应用的错误页面,很多时候您能从这里得到意想不到的收获。

3、SQL注入攻击的特点。

4)变种极多:有经验的攻击者会手动调整攻击参数,致使攻击数据的变种是不可枚举的,这导致传统的特征匹配检测方法仅能识别相当少的攻击,难以防范。

5)攻击过程简单:目前互联网上流行众多的SQL注入攻击工具,攻击者借助这些工具可很快对目标WEB系统实施攻击和破坏。

6)危害大:由于WEB编程语言自身缺陷以及具有安全编程能力的开发人员少之又少,大多数WEB业务系统均具有被SQL注入攻击的可能。

而攻击者一旦攻击成功,可以对控制整个WEB业务系统,对数据做任意的修改,破坏力达到及至。

4、SQL注入攻击过程。

1)判断Web环境是否可以SQL注入。

如果URL仅是对网页的访问,不存在SQL注入问题,如:/162414739931.shtml就是普通的网页访问。

只有对数据库进行动态查询的业务才可能存在SQL注入,如:/webhp?id=39,其中?id=39表示数据库查询变量,这种语句会在数据库中执行,因此可能会给数据库带来威胁。

2)寻找SQL注入点。

完成上一步的片断后,就要寻找可利用的注入漏洞,通过输入一些特殊语句,可以根据浏览器返回信息,判断数据库类型,从而构建数据库查询语句找到注入点。

3)猜解用户名和密码。

数据库中存放的表名、字段名都是有规律可言的。

通过构建特殊数据库语句在数据库中依次查找表名、字段名、用户名和密码的长度,以及内容。

这个过程可以通过网上大量注入工具快速实现,并借助破解网站轻易破译用户密码。

4)寻找WEB管理后台入口。

通常WEB后台管理的界面不面向普通用户开放,要寻找到后台的登陆路径,可以利用扫描工具快速搜索到可能的登陆地址,依次进行尝试,就可以试出管理台的入口地址。

5)入侵和破坏。

成功登陆后台管理后,接下来就可以任意进行破坏行为,如篡改网页、上传木马、修改、泄漏用户信息等,并进一步入侵数据库服务器。

【实验环境】操作系统:Windows 7 旗舰版IDE :Myeclipse 8.6服务器:Tomcat 7.0.11数据库:SQLServer 2005浏览器:搜狗浏览器3.2.0【实验过程】本次的实验过程主要用自己架设的网站进行SQL注入攻击的测试和防御。

1、新建网站SQLInjection项目,新建index.jsp进行SQL注入攻击演示。

这里以index.jsp为登陆界面,用户输入用户名和密码后进行登陆,获取参数后传递给LoginDeal(Servlet)进行处理,再根据处理的结果跳转到不同的页面。

1)页面预览如下:2)这个页面的处理流程如下:a)页面提交的用户名和密码通过表单提交,代码为<form action="loginDeal" method="POST"><input type="text" name="userName" value="用户名"><input type="password" name="passwd"></form>b)当点击登陆后,即提交表单到loginDeal,在loginDeal里获取到userName和passwd后调用com.sqlInjection.util.RequestDeal类进行登陆的验证,如果验证成功则跳转到welcom.jsp页面,如果失败则设置相应的提示信息后跳转回index.jsp页面。

c)RequestDeal进行验证的方法为利用userName和passwd两个参数构造查询语句"select * from users where name='" + userName +"' and passwd='"+ passwd + "'",查询后返回ResultSet set,如果set.next()为true,则表示表中存在这样的一个记录,用户合法,所以验证成功。

3)这里用到的数据库为sqlinjection,用到的users表结构为:+------------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+------------+-------------+------+-----+---------+-------+| name | varchar(25) | YES | | NULL | || passwd | varchar(35) | YES | | NULL | || permission | varchar(10) | YES | | NULL | |+------------+-------------+------+-----+---------+-------+其中name为用户名,passwd为密码,permission为等级。

4)正常的话用户输入自己的用户名和密码,如果正确则会跳转到welcome.jsp,如果失败则会提示错误信息如下:5)接下来我们进行简单的SQL注入攻击,我们可以通过最常用的‘和-- 来达到我们的目的,实现任何用户在不知道密码的情况下进行登陆,我们可以通过用户名或者是在密码处进行查询语句的构造,以密码为例,使密码的结构为:随机密码’ or 1=1 --这里注意单引号不能丢失,因为密码的验证是字符串,所以在密码后面要补全语法中的单引号,然后加上永真的逻辑语句or 1=1 ,再用-- 注释掉原有语句后面还有的内容(注意-- 后面至少要有一个空格),这样一来,不管输入什么随机密码,只要表中有用户记录,那么查询的结果就一定会为真,也就是说一定能登陆成功。

6)用以上构建的密码尝试进行登陆,以kejack用户为例,用户名为:kejack,密码为:1234’ or 1=1 -- ,如图(以下所有攻击的字串请手动敲入,复制单引号出错)点击登陆后我们可以发现登陆成功了(正确的密码应该是kejack)由此简单地用注入攻击绕过了用户的密码验证,得到了用户kejack的控制权,假设我们用这样的方法登陆admin帐号的话,那么就能得到admin的权限,进行非法的操作了。

7)接下来我们可以尝试通过SQL注入攻击添加一个管理员权限的用户,通过;来进行SQL语句的批执行添加,这次我们以用户名为例,我们的目的不再是进行登陆,而是在于添加一个用户,所以不再关心登陆结构,构造语句如下:kejack' ; insert into users values ('hake','hake','admin') --通过;隔开后我们添加了一个添加用户的SQL语句,再注释掉之后的语句。

8)执行上面的注入语句结果如下:在做这个多语句插入的过程中尝试了几次都失败,发现执行SQL语句的时候报错了,最开始的时候我用是MYSQL5.5做的实验,查找相关的材料才知道原来MYSQL默认是禁用了多语句执行的,在连接的时候要打开多语句执行许可才行,方法为更改jdbc驱动连接语句如下:DriverManager.getConnection("jdbc:mysql://localhost:3306/sqlinjection?us er=root&password=kejack&allowMultiQueries=true");后来发现MYSQL做不了xp_cmdshell的攻击改用SQLServer2005后则驱动的连接语句要改为:DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=sqlinjection; allowMultiQueries=true","sa","");设置了allowMultiQueries的值为真后再次进行试验就能成功了,此时查看mysql 中的users表,可以看到已经成功将新的用户插入到表中。

同样,在更换为sqlserver 后攻击也同样有效,可以看到表中新增加的值:9)接下来要开始做的是xp_cmdshell注入攻击的实验,由于mysql没有这样的策略,所以改用SQLServer2005,进行SQLServer 2005的配置要注意以下的问题:a)安装SQLServer2005 以及SQL Server Management Studio。

相关文档
最新文档