PHP手动注入试验.DOC

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PHP手动注入试验

PHP手动注入实验 实验目的 通过手动注入PHP页面,获取password字段名。 了解PHP手动注入的基本原理。 了解PHP手动注入的过程和基本常用SQL指令。 实验原理 SQL注入原理介绍 1.1 什么是SQL注入 SQL注入是指攻击者通过在应用程序中预先定义好的查询语句结尾加上额外的SQL语句元素,欺骗数据库服务器执行非授权的任意查询。这类应用程序一般是网络应用程序,它允许用户输入查询条件(一般是在浏览器地址栏进行,通过正常的www端口访问SQL Injection,SQL注入。 SQL注入是从正常的WWW端口通过对页面请求访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙很少会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。 一般来说注入攻击常采用的步骤有发现SQL注入位置、判断后台数据库类型、获取管理员权限,此外在得到网站管理员权限后还可以通过发现虚拟目录、上传木马等手段获取服务器的系统权限。 1.2 注入原理概述 SQL是一种用于关系数据库的结构化查询语言。它分为许多种,但大多数都松散地基于美国国家标准化组织最新的标准SQL-92。SQL语言可以修改数据库结构和操作数据库内容。当一个攻击者能够通过往查询中插入一系列的SQL操作数据写入到应用程序中去,并对数据库实施了查询,这时就已经构成了SQL-Injection。 目前使用的各种数据库如access、SQL Server、my SQL、Oracle等都支持SQL语言作为查询语言,因此,若程序员在编写代码的时候没有对用户输入数据的合法性进行判断,有可能导致应用程序的安全隐患,攻击者根据返回的结果,获得某些想得知的数据。 1.3 Access数据库的注入原理 Access数据库的注入就是提交SQL语句,然后根据返回信息来判断是否正确,从而获得数据库中有价值的内容,其主要是通过猜解得过程来实现注入。 第一步 确定注入点: 通常用“ and 1=1”或者“ and 1=2”来确认注意:and两边各有一处空格。”select *from 表名where id=”xx and1=2或 SQL=”select *from 表名where id=”xx and 1=1 的永真、永假条件,那说明该网站存在SQL注入。 第二步 猜解表名检测是否存在admin表,admin这个表名可以替换成其它的表名进行猜解如果存在该表名返回页面结果为正常,如果不存在则返回为出错。第三步 猜解某表名中存在的字段and (select top 1 asc(mid(usernameN1)) from Admin)0。猜解第N位的ASCII码0取值从负数到正数都有可能,当然常见的 密码都是数字加字母的组和,它们的ASCII值在0-128之间,将值替换为这之间的值,如果正确,则返回正常页面,如果不是返回出错,将N分别替换为1、2、3、4……反复猜解即可得出字段每一个位数的值而得到密码,参数N为字段的位数,如果是(mid(username11)),则查找username字段中的第一位,依此类推。整个语句的最右边“0”,数字0表示的是ASCII码,并不是真正的字段位数相应的字符。网络上流行的阿D,明小子等注入是依据原理而设计的’80040e14’;若是SQL Server数据库,返回Microsoft OLE DB Provider for OBDC Drivers 错误’80040e14’。同样,如果IIS错误信息提示被关闭,可以通过猜测是否存在系统表,例如sysobjects表等来判断数据库类型。 此外,由于SQL Server数据库存在帐户权限,所以如果发现有sa权限的注入点,今年改过尝试,可通过上传或写入配置文件等方法获得webshell得到服务器的控制权限,从而拿到服务器的系统权限。 1.5 PHP注入原理 php注入与asp注入还是有区别的,我们要进行的是跨表查询要用到UNION.UNION是连接两条SQL语句,UNION后面查选的字段数量、字段类型都应该与前面SELECT一样.通俗点说如果查寻对的话就出现正常的页面. 在SQL语句中,可以使用各种 MySQL内置的函数,经常使用的就是DATABASE()、USER()、SYSTEM_USER()、SESSION_USER()、 CURRENT_USER()这些函数来获取一些系统的信息,例如:load_file(),该函数的作用是读入文件,并将文件内容作为一个字符串返回。如果该文件不存在,或因为上面的任一原因而不能被读出,函数返回空。 php注入就是利用变量过滤不足造成的 看看下面两句SQL语句: ①SELECT * FROM article WHERE articleid=$id ②S

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档