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

这里会联想到开始学SQL注入的时候,利用load_file或者into outfile,常用hex把一句话编码一下再导入;

这里确实省去了'单/双引号',万无一失(magic_quotes_gpc()咱不提);

但当时只顾着看结果了,今天在整理以前的资料时发现了这个问题,脑子却晕的不知道为啥这么编码,实际操作一下:

可以很清楚看到报错,select后面的第一个'单引号,和一句话木马里cmd前那个单引号闭合导致后面语句报错;

然后转成hex,去掉引号,发现可以写入;

这里我的机子没给他权限,会提示不能写,实际还得看情况;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

时间: 2017-02-17

SQL Injection with MySQL 注入分析

声明 本文仅用于教学目的,如果因为本文造成的攻击后果本人概不负责,本文所有代码均为本人所写,所有数据均经过测试.绝对真实.如果有什么遗漏或错误,欢迎来安全天使论坛和我交流. 前言 2003年开始,喜欢脚本攻击的人越来越多,而且研究ASP下注入的朋友也逐渐多了起来,我看过最早的关于SQL注入的文章是一篇99年国外的高手写的,而现在国外的已经炉火纯青了,国内才开始注意这个技术,由此看来,国内的这方面的技术相对于国外还是有一段很大差距,话说回来,大家对SQL注入攻击也相当熟悉了,国内各大站点都有些堪称

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:以日志的方式

php+mysql注入页面实现

首先来借鉴一下注入点,以往的注入点是这样的http://www.xxx.com/show.php?id=1,典型的数字型注入. $id=$_GET['id'];//获取GET方式传过来的值并赋值给变量 既然是注入那么肯定要操作数据库. $con = mysql_connect('127.0.0.1','root','root');//使用connect这个函数来连接数据库,然后赋值给变量,connect这个函数有三个 参数分别是数据库地址,账号,密码. mysql_select_db('数据库名

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注入中导出字段内容的研究通过注入导出WebShell

最大的局限就在这里--插入数据,所以我们只能从程序现有的功能入手,其实很多程序都可以提交评论.留言.帖子等,就看程序是怎么把变量插入数据库的.其实道路就在我们身边,靠我们自己去开辟. 不用多说,先看在本地测试的一个简单例子,建立一个表,结构如下: CREATE TABLE `article` ( `articleid` INT NOT NULL AUTO_INCREMENT , `title` VARCHAR( 200 ) NOT NULL , `content` TEXT NOT NULL ,

PHP+MySQL 手工注入语句大全 推荐

暴字段长度 Order by num/* 匹配字段 and 1=1 union select 1,2,3,4,5--.n/* 暴字段位置 and 1=2 union select 1,2,3,4,5-..n/* 利用内置函数暴数据库信息 version() database() user() 不用猜解可用字段暴数据库信息(有些网站不适用): and 1=2 union all select version() /* and 1=2 union all select database() /* a

Php中用PDO查询Mysql来避免SQL注入风险的方法

当我们使用传统的 mysql_connect .mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制.虽然可以用mysql_real_escape_string()函数过滤用户提交的值,但是也有缺陷.而使用PHP的PDO扩展的 prepare 方法,就可以避免sql injection 风险. PDO(PHP Data Object) 是PHP5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连

防止MySQL注入或HTML表单滥用的PHP程序

MySQL注入的意图是接管网站数据库并窃取信息.常见的开源数据库,如MySQL,已经被许多网站开发人员用来储存重要信息,如密码,个人信息和管理信息. MySQL之所以流行,是因为它与最流行的服务器端脚本语言PHP一起使用.而且,PHP是主导互联网的Linux- Apache服务器的主要语言.因此,这意味着黑客可以很容易地利用PHP就像Windows的间谍软件一样. 黑客向一个无担保的网页表单输入大量恶意代码(通过下拉菜单,搜索框,联系表单,查询表单和复选框). 恶意代码将被送到MySQL数据库,

Mysql数据库使用concat函数执行SQL注入查询

SQL注入语句有时候会使用替换查询技术,就是让原有的查询语句查不到结果出错,而让自己构造的查询语句执行,并把执行结果代替原有查询语句查询结果显示出来. 例如:原本查询语句是 复制代码 代码如下: select username,email,content from test_table where user_id=uid; 其中uid,是用户输入的.正常显示结果会出现用户名,用户邮箱,用户留言内容.但是如果uid过滤不严,我们可以构造如下SQL语句来获得任意数据表信息. 复制代码 代码如下: u

MySQL 及 SQL 注入与防范方法

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理. 1.以下实例中,输入的用户名必须为字母.数字及下划线的组合,且用户名长度为 8 到 20 个字符之间: if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches)) { $result =

MySQL解决SQL注入的另类方法详解

本文实例讲述了MySQL解决SQL注入的另类方法.分享给大家供大家参考,具体如下: 问题解读 我觉得,这个问题每年带来的成本可以高达数十亿美元了.本文就来谈谈,假定我们有如下 SQL 模板语句: select * from T where f1 = '{value1}' and f2 = {value2} 现在我们需要根据用户输入值填充该语句: value1=hello value2=5 我们得到了下面的 SQL 语句,我们再提交给数据库: select * from T where f1='h

PHP+mysql防止SQL注入的方法小结

本文实例讲述了PHP+mysql防止SQL注入的方法.分享给大家供大家参考,具体如下: SQL注入 例:脚本逻辑 $sql = "SELECT * FROM user WHERE userid = $_GET[userid] "; 案例1: 复制代码 代码如下: SELECT * FROM t WHERE a LIKE '%xxx%' OR (IF(NOW=SYSDATE(), SLEEP(5), 1)) OR b LIKE '1=1 '; 案例2: 复制代码 代码如下: SELECT

jquery过滤特殊字符',防sql注入的实现方法

今天写的代码给项目经理看了下,因为之前没有考虑sql注入的问题,然后在他测试我的code的时候,打了一个"'",然后我的程序就挂了! 于是乎,我在网上找到了一个验证并过滤文本框的jquery! 先上图: PS:这里用@#测试,因为'太小了,都看不清楚了! 具体的jquery代码: <script type="text/javascript" language="javascript"> $(document).ready(functi

PHP防范SQL注入的具体方法详解(测试通过)

一个优秀的PHP程序员除了要能顺利的编写代码,还需要具备使程序处于安全环境下的能力.今天我们要向大家讲解的是有关PHP防范SQL注入的相关方法. 说到网站安全就不得不提到SQL注入(SQL Injection),如果你用过ASP,对SQL注入一定有比较深的理解,PHP的安全性相对较高,这是因为MYSQL4以下的版本不支持子语句,而且当php.ini里的 magic_quotes_gpc 为On 时. 提交的变量中所有的 ' (单引号), " (双引号), \ (反斜线) and 空字符会自动转为

PHP与SQL注入攻击防范小技巧

下面来谈谈SQL注入攻击是如何实现的,又如何防范. 看这个例子: 复制代码 代码如下: // supposed input $name = "ilia'; DELETE FROM users;"; mysql_query("SELECT * FROM users WHERE name='{$name}'"); 很明显最后数据库执行的命令是: SELECT * FROM users WHERE name=ilia; DELETE FROM users 这就给数据库带来

探讨php中防止SQL注入最好的方法是什么

如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子: 复制代码 代码如下: $unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')"); 这是因为用户可以输入类似VALUE"); DROP TABLE表; - ,使查询变成: 复制代码 代

JSP连接MySql/MS SQL Server/Oracle数据库连接方法[整理]

JSP连接MySql数据库方法 首先先将MySql的数据库连接驱动拷贝到Tomcat/common/lib包下 下载mysql-connector-java-5.1.6.zip http://mysql.cs.pu.edu.tw/Downloads/Connector-J/mysql-connector-java-5.1.6.zip 配置Tomcat的虚拟目录-略 创建jdbcMySql.jsp页面 页面代码如下: 复制代码 代码如下: <%@ page contentType="text

T-SQL篇如何防止SQL注入的解决方法

1.什么是SQL注入 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击. 2.怎么进行SQL注入 关于怎么进行SQL注入,网上已经有很多文章详细介绍过了,可以参考博友滴答的雨的博文 <SQL注入攻防入门详解>,亲测有效.当执行完文中的5.6.7三步的时候,你会发现服务器上的安全保护措施都已是