版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP全解1- 全解(一)-PHP网页的安全性问题 方式1、命令注入(CommandInjection)2、eval注入(EvalInjection)4、跨(CrossSiteScripting,XSS)5、SQL注入(SQLinjection)6、跨请求(CrossSiteRequestForgeries,CSRF)7、Session会话劫持(SessionHijacking)8、Session固定(Session9、HTTP响应拆分(HTTPResponseSplitting)10、文件上传(FileUploadAttack) 穿越(DirectoryTraversal)12、文件包含(RemoteInclusion)13、动态函数注入(DynamicVariableEvaluation)14、URL(URLattack)15、表单提交(SpoofedFormSubmissions)16、HTTP请求(SpoofedHTTPRequests)几个重要的php.ini选Register全解(二)-命令注入命令注入system、exec、passthru、s_exec、“(与s_exec功能相同)stringsystem(stringcommand,intcommand要执行return_var存放执行命令的执行后的状态stringexec(stringcommand,array&output,intcommand要执行output获得执行命令输出的每一行字符return_var存放执行命令后的voidpassthru(stringcommand,intcommand要执行return_var存放执行命令后的string _exec(stringcommand要执行实例$dir=$_GET["dir"];if(isset($dir)){echo"<pre>";system("ls-al".$dir);echo"</pre>";}我们提交 提交以后,命令变成了system("ls-al|cateval注入mixedeval(stringcode_str)//eval注入一般发生在者能控制输入的字符串的时$var=if{$arg=$_GET["arg"];eval("\$var=$arg;");echo"\$var=".$var;} 动态函数funcA(){}func{}if{$myfunc=$_GET["func"];echo$myfunc();}程序员原意是想动态调用A和B函数,那我们提交htt /ex.php?func=phpinfo漏防范方法3、使用escapes arg函数来处理命令参数4、使用safe_mode_exec_dir指定可执行文件的路 arg函数会将任何引起参数或命令结束的字符转义,单引号“’”,替换成“\’”,双引号“"”,替用 指定可执行文件的路径,可以把会使用令提前放入此路径safe_mode_exec_dir= 漏洞全解(三)-植客户端植客户端植入(ScriptInsertion),是指将可以执行的插入到表单、、动画或超文字等对象内。当用户打开这些对象后,者所植入的就会被执行,进而开始。可以被用作植入的HTML一般包括以下几种1、<script>标记的javascript和vbscript等页面程序。在<script>内可以指定js程序代码,也可以在src属性内指定js文件的URL路径3、<embed>标记的对象。这些对象是多文件,例如:swf文件。通常在src属性内指定对象客户端植入的步1、者普通用户后登陆实CREATETABLE`postmessage``id`int(11)NOTNULL`subject`varchar(60)NOTNULLdefault`name`varchar(40)NOTNULLdefault `varchar(25)NOTNULLdefault`postdate`datetimeNOTNULLdefault’0000-00-00PRIMARYKEYENGINE=MyISAMDEFAULTCHARSET=gb2312COMMENT=’使用者的留言AUTO_INCREMENT=69//add.php插入留//list.php留言列//show.php显示留插入> ";</script>跳转页面或者使用其他自行构造的js代码进行防范的方法stringhtmlspecialcharsstringstring,intquote_stylestringcharset)string是要编码的字符串qoestye可选值可为PAEN_QOESEN_OUOESPA,EN_QOESEN_NQOTES,charset可选,表示使用的字符&—->&"—->‘—-><—->>—-><?phpechohtmlspecialchars(nl2br($row['question']),ENT_QUOTES);全解(四)-xss跨站跨缩写为XSS 么他就可以成此用户来登录,获得此用户的权限。2、目标用户登录此,在登陆期间打开了者发送的xss3、执行了此xss4、目标用户页面跳转到者的,者取得了目标用户的信5、者使用目标用户的信息登录,完似htt ;</script>,诱骗用户点击后,可以获取用户s防范方法stringhtmlspecialchars(stringstring,intquote_style,stringstring是要编码的字符quote_style可选,值可为 charset可选,表示使用的字符集函数会将下列特殊字符转换成html编码&—->&"—->"‘—-><—->>—-><formaction="<?phpecho$_SERVER["PHP_SELF"];?>" get.php中上述的表单. .. .
<formaction=""全解(五)-SQL注入SQL注入果web程序没有对提交的数据经过检查,那么就会造成sql注入。SQL注入的一般步骤实CREATETABLE`postmessage``id`int(11)NOTNULL`subject`varchar(60)NOTNULLdefault`name`varchar(40)NOTNULLdefault `varchar(25)NOTNULLdefault`postdate`datetimeNOTNULLdefault’0000-00-00PRIMARYKEYENGINE=MyISAMDEFAULTCHARSET=gb2312COMMENT=’运用者的留言AUTO_INCREMENT=69grantallprivilegesonch3.*to‘sectop’@localhostidentifiedby//add.php插入留//list.php留言列//show.php显示留页 .cn/show.php?id=71and//show.php12-15//mysql查询语$query="select*frompostmessagewhereid=$result=ordie("ySQL查询语句失败:and1=1,语select*frompostmessagewhereid71and1=1这语句前值后值都为真,and以后也为真,返回查询到的数据and1=2,语select*frompostmessagewhereid71and1=2这语句前值为真,后值为假,and以后为假,查询不到任何数据正常的SQL查询,经过我们构造的语句之后,形成了SQL注入。通过这个注入点,我们还可以进一步拿到权限,比如说运用union管理,数据库信息,或者用mysql的load_file,intooutfile等函数进一步渗透。防范方法整型参数intval函数将数据转换成整数intintval(mixedvar,intbase,可选,是基础数,默认是浮点型参数运用floatvaldoubleval函数分别转换单精度和双精度浮点型参数intfloatval(mixedintdoubleval(mixedvar是要转换的变量stringaddslashes(stringstr是要检查的字符//mysql查询语$query="select*frompostmessagewhereid=$result=ordie("ySQL查询语句失败:{$var=}{$var=} 漏洞全解(六)-请跨请求CSRF(CrossSiteRequestForgeries),意为跨请求,也有写为XSRF。者目标用户击者利用隐蔽的HTTP连接,让目标用户在不注意的情况下单击这个,由于是用户自己点击的,而他又是合法用户拥有合法权限,所以目标用户能够在内执行特定的HTTP,从而达到者的目的。例如:某个购物商品时,采用/buy.php?item=watch&num=1,item参数确定要什么物品,num参数确定要数量,如果者以隐藏的方式发送给目标用户<imgsrc="h 以后,的数量就成了1000个实 if{$ID_Dele=$sql="deletefrombookwhereidin(".$ID_Dele.")";}{$sql="deletefrombookwhereid=".$id传递要删除ID}echoscriptlanguage=’javascript’>";echo"alert(‘删除成功!’);";echo"echo<imgsrc="delbook.php?id=2"<imgsrc="delbook.php?id=3"<imgsrc="delbook.php?id=4"<imgsrc="delbook.php?id=5"插入4张分别删除4个id留言,然后我们返回首页浏览看,没有什么变化。。显示不了者在留言中插入隐藏的,此具有删除留言的作用,而者自己这些的时候,是不具限的,所以看不到任何效果,但是当管理员登陆后,查看此留言,就会执行隐藏的,{$copyright=$_POST["copyright"]."<br/>设计制作:<ahref {$sql="updategly."’where}{$sql="updategly."’,copyright=’".$copyright."’where}echoscriptlanguage=’javascript’>";echo"alert(‘修改成功!’);";echo"echo}这个文件用于修改管理和设置的一些信息,我们可以直接构造如下表单<formaction=""method="post"name="form1"<inputtype="radio"value="1"<inputtype="radio"name="sh"checked<inputtype="text"name="username"<inputtype="password"name="password"<inputtype="text"name="title"value="随缘PHP留言V1.0(带审核功能<textareaname="gg"rows="6"cols="80">安装使用随缘网络PHP留言板V1.0(带审核<textareaname="copyright"rows="6"cols="80">随缘网络PHP留言本V1.0:厦门随缘网络科技2005-2009<br/>承接建设及系统定制提供主机</textarea>存为attack.html,放到自己上htt 藏这个,管理以后,他的用户名和全部修改成了root防范方法3、使用POST,不要使用在 {){$serverhost= = = if(strncmp($sourcehost,$serverhost,{echoscriptlanguage=’javascript’>";echo"alert(‘数据来源异常!’);";& echo"echo}}$copyright=$_POST["copyright"]."<br/>设计制作:<ahref {$sql="updategly."’where}{$sql="updategly."’,copyright=’".$copyright."’where}echoscriptlanguage=’javascript’>";echo"alert(‘修改成功!’);";echo"echo}检查内置隐藏变量{if{//$post_id=md5(uniqid(rand(),//Session变$_SESSION["post_id"]=}//检查是否相if{//if($_SESSION["post_id"]!={//POST变echoscriptlanguage=’javascript’>";echo"alert(‘数据来源异常!’);";echo"echo}}<inputtype="resetname="Submit2value重置<inputtype="hidden"name="post_id"value="<?phpecho}使用POST,不要使用传递表单字段时,一定要是用POST,不要使用GET,处理变量也不要直接使用PHP漏洞全解(七)-Session劫持服务端和客户端之间session(会话)来连接沟通。当客户端的浏览器连接到服务器后,服务器就会是由一个独特的字符sessionid。用户发出请求时,所发送的http表头内包含sessionid的值。服务器使用http表头内的sessionid来识别时哪个用户提交的请求。session保存的是每个用户的个人数据,一般的web应用程序会使用session来保存通过验证的用户账号和。在转换不同的网页时,如果需要验证用户,就是用session内所保存的账号和来比较。session的生命周期从用户连上服务器后开始,在用户关掉浏览器或是注销时用户session_destroy函数删session数据时结束。如果用户20分钟内没有使用计算机的动作,session也会自动结束。php处理session的应用架构会话劫持会话劫持是指者利用各种来获取目标用户的sessionid。一旦获取到sessionid,那么者可以利用目标用户的来登录,获取目标用户的操作权限。1):尝试各种sessionid,直到为止计算:如果sessionid使用窃取:使用网络截获,xss等方法获会话劫持的步实if{$link=mysql_connect("localhost","root",ordie("无法MySQL数据库连接:mysql_error());mysql_select_db("cms")ordie("无法选择MySQL数据库if{$query="select*frommemberwhereusername=’". "’andpassword=’".addslashes($_POST["password"]).}{$query="select*frommemberwhereusername=’".$_POST["username"]"’andpassword=’".$_POST["password"].}$result=ordie("MySQL查询语句失败:$match_count=mysql_num_rows($result);if($match_count){$_SESSION["username"]=$_SESSION["password"]=$_SESSION["book"]=1; }//Session访客的SessionID是:<?phpechosession_id访客:<?phpechohtmlspecialchars($_GET["user"],ENT_QUOTES);book商品的数量:<?phpechohtmlspecialchars($_SESSION["book"],ENT_QUOTES);$_SESSION["username保存账$_SESSION["password#_SESSION["book"]保存商品数//Sessionecho目标用户SessionID是:session_idbrecho目标用户username是:$_SESSION["usernamebrechopassword是:$_SESSION["passwordbr//book的数量设置$_SESSION["book"]=提交此ID为获取session固定可以使用把sessionid发给用户的然 者 防范方法session函数boolsession_regenerate_id([boolindex.php开头加2)更改session的名称session的默认名称是PHPSE,此变量会保存在 中,如果不抓包分析,就不能猜到这个session透明化sessionid指当浏览器中的http请求没有使用 s来制定sessionid时,sessioinid使用来传递;打开php.ini,编辑session.use_trans_sid=int_set("session.use_trans_sid",0); session.use_s=1表示使 s存放sessionsession.use_only_s=1表示只使用 s存放sessionid,这可以避免session固定 int_set("session.use_only_s",1);p>5)使用URL传递隐藏参数$seid=md5(uniqid(rand()),$_SESSION["seid"]=否是web程序自己调用的。PHP漏洞全解(八)-HTTP响应拆分HTTP请求的格式/面例子发送HTTP请求给服务器GET/index.phpHTTP/1.1↙ //↙↙符号表示回车键,在空白行之后还要在按一个空格才会发送HTTP请求,HTTP请求的表头中只Host表头是必要的饿,其余的HTTP表头则是根据HTTPHTTP请求的方法HEAD:与GETPOST:发送数据给服务器处理,数据包含在HTTPOPTIONS:返回服务器所支持的HTTP请求CONNECT:将HTTP请求的连接转换成透明的TCP/IP通HTTP响应的格式服务器在处理完客户端所HTTP请求后,会发送下列响应HTTP/1.1200HTTP请求和响应的例子打开cmd输 net,输入 GET/index.php↙返回HTTP响应的表PHP来发送HTTP请求voidheader(stringstringboolreplaceinthttp_response_code]])string是HTTP表头的字符串为http_response_codeHTTP响应码使用http_response_code的值//Internetsocket连$fp= HTTPfputs($fp,"GET/HTTP/1.1\r\n");fputs($fp,"Host: while{//256位的HTTP响应字符}//Internetsocket连HTTPechoHTTP响应拆分HTTP响应拆分是由于者经过精心设计利用电子邮件或者,让目标用户利用一个请求产生两个响应,前一个响应是服务器的响应,而后一个则是者设计的响应。此之所以会发生,是因为WEB程序将使用者的数据置于HTTP响应表头中,这些使用者的数据是有者精心设计的。可能HTTP请求响应拆分的函数包括以下几个 HTTP响应拆分通常发生在:Set-表头:将使用者的数据写入 header("Location:".GET/location.php?page=h Host:localhost↙HTTP/1.1302Date:Wed,13Jan201003:44:24Server:Apache/2.2.8(Win32)PHP/5.2.6X-Powered-By:PHP/5.2.6Location:hContent-Length:0Keep-Alive:timeout=5,max=100Connection:Keep-AliveContent-Type:.Content-Typetext/htmlH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【同步辅导】2021高中数学北师大版必修四导学案:《任意角的正弦函数、余弦函数的定义与周期性》
- 征收土地补偿标准2022年
- 甘肃省平凉市庄浪县2024-2025学年高一上学期第二学段考数学试题(含答案)
- 【备课参考】2020年新人教版高中地理必修1:课堂实录2.2《气压带和风带》
- 安徽省滁州市来安县部分学校2024-2025学年第一学期八年级语文期末试卷(含答案)
- 2024-2025学年湖南省岳阳市高中教学质量监测试卷高一数学试题(含解析)
- 《浅谈当下护士意识》课件
- 《金版教程》2022届高考生物一轮总复习阶段示范性金考卷1-
- 【名师一号】2020-2021学年高中地理中图版必修三-双基限时练(九)
- 2022届高考语文第一轮复习-第3部分论述类文本阅读常见题型(复习课)
- 2023-2024学年安徽省安庆市高一上学期期末联考生物试题(解析版)
- 学术不端行为治理研究
- 广东省广州市海珠区2023-2024学年九年级上学期期末物理试题(含答案)
- 企业文化、战略与电力能源知识参考题库练习卷含答案(一)
- 福建南平武夷高新技术产业控股集团有限公司招聘笔试冲刺题2024
- 2024年设备维修部管理制度(6篇)
- 胃镜超声内镜护理配合
- 精神科护理工作计划例文
- 2024山地买卖合同模板
- 河北省承德市2023-2024学年高一上学期期末物理试卷(含答案)
- 【初中化学】二氧化碳的实验室制取教学课件-2024-2025学年九年级化学人教版上册
评论
0/150
提交评论