神盾加密解密教程(一)PHP变量可用字符
先来说说php变量的命名规则,百度下一抓一大把: 其实所有编程都类似的命名规范就是: 好了,差不多就是这样了,但是这不是我们要说的重点。 前几天QQ上一朋友发我一个shell,是加密过的,通篇乱码,不过上面有注释,叫做 “神盾加密” 好霸气的样子。 当然网上我也没找到权威的质料强有力的说明PHP的变量名可用字符的信息,所以我只能自己测试了。(英文不好,没办法谷歌到有利的证据) 代码如下: if ($_POST) {
$chr = chr($_POST['chr']); eval('$'.$chr."=1;"); echo 'ok'; exit; } ?> 代码还算比较简单,PHP 部分只负责解析每一个字符当作变量名的执行结果是否会抛出溢出。 代码如下: "x41,x42,x43,x44,x45,x46,x47,x48,x49,x4a,x4b,x4c,x4d,x4e,x4f,x50,x51,x52,x53,x54,x55,x56,x57,x58,x59,x5a,x5f,x61,x62,x63,x64,x65,x66,x67,x68,x69,x6a,x6b,x6c,x6d,x6e,x6f,x70,x71,x72,x73,x74,x75,x76,x77,x78,x79,x7a,x7f,x80,x81,x82,x83,x84,x85,x86,x87,x88,x89,x8a,x8b,x8c,x8d,x8e,x8f,x90,x91,x92,x93,x94,x95,x96,x97,x98,x99,x9a,x9b,x9c,x9d,x9e,x9f,xa0,xa1,xa2,xa3,xa4,xa5,xa6,xa7,xa8,xa9,xaa,xab,xac,xad,xae,xaf,xb0,xb1,xb2,xb3,xb4,xb5,xb6,xb7,xb8,xb9,xba,xbb,xbc,xbd,xbe,xbf,xc0,xc1,xc2,xc3,xc4,xc5,xc6,xc7,xc8,xc9,xca,xcb,xcc,xcd,xce,xcf,xd0,xd1,xd2,xd3,xd4,xd5,xd6,xd7,xd8,xd9,xda,xdb,xdc,xdd,xde,xdf,xe0,xe1,xe2,xe3,xe4,xe5,xe6,xe7,xe8,xe9,xea,xeb,xec,xed,xee,xef,xf0,xf1,xf2,xf3,xf4,xf5,xf6,xf7,xf8,xf9,xfa,xfb,xfc,xfd,xfe,xff"
整理后发现是这样的16进制数据,当然看不懂没关系,看下转义后的结果: 代码如下: "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,,?,¡,¢,£,¤,¥,¦,§,¨,©,ª,«,¬,,®,¯,°,±,²,³,´,µ,¶,·,¸,¹,º,»,¼,½,¾,¿,À,Á,Â,Ã,Ä,Å,Æ,Ç,È,É,Ê,Ë,Ì,Í,Î,Ï,Ð,Ñ,Ò,Ó,Ô,Õ,Ö,×,Ø,Ù,Ú,Û,Ü,Ý,Þ,ß,à,á,â,ã,ä,å,æ,ç,è,é,ê,ë,ì,í,î,ï,ð,ñ,ò,ó,ô,õ,ö,÷,ø,ù,ú,û,ü,ý,þ,ÿ"
除了前面的 A-Z_a-z 是我们熟悉的,后面的那些乱七八糟的东西竟然也能当作正常的变量名,简直不可思议。 代码如下: "x9,xa,xd,x20,x30,x31,x32,x33,x34,x35,x36,x37,x38,x39,x41,xff"
发现结果多了好多字符,其实有一部分我们是要去掉的,比如 x20 其实就是 空格,相当于 eval('$a =1;'); 而已,当然是能正常执行的。 也许有人会说 $$a; ${$a}; 这样的变量呢? 好了,关于 php 变量可用字符的知识点分享完毕了,如果有哪说的不对的,请留言,我会及时改正以免误导大家。 我的猜测: ascii 范围 0-127(x00-x7f),latin1 范围 0-255(x00-xff),也许PHP就是将范围扩充到 latin1 字符集了,当然我没看过PHP源码,只能说是个猜想而已。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |