关于php验证码的破解。
网站防爆最好是加验证码了。
市场上的验证码一般有几花样,
英文+数字、中文与JS的,
还有很少见的中国移动识图验证码。
这种看似很威武,实际上感觉也不太好,答案就固定有8个了。
做数字是否存在判断后,答案就能锁定4个了。靠蒙的话,蒙对的机率还是挺大的。
最后是加些干扰点、干扰线。再扭曲字体等。
php通常是用GD库生成图片+SESSION来实现认证,
当突破验证码这关之后,可以模拟请求获sessionID,
用获得sessionID取得验证码分析之后再模拟注册登录验证。
验证码被破后基本是畅通无阻了。然后就爆力效验账号密码,滥发信息之类云云了……
在明白过程后就好防备了,所以说涉及到几个问题。
一、要加强验证码难度,一些位置固定字符形态不变的是很容易识别的了。
二、要SESSION做适当配置。SESSION效验后及时清掉,禁止URL传值设置等...
三、适当做些时间与次数限制。
下面是百度的验证码BZ6E,应该有来路判断的提交几次就挂了,伪一下才行。
有些难度,每个字符都连接一起加干扰线加少许扭曲,跟淘宝的差不多,不过淘宝没干扰线。
大家讨论下看看怎么破,应该还是有人破的了。贴吧上还是经常有人爆吧的。
好了,先扯这么多。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
$image_name = 'baidu.jpg';
$image = "http://tieba.baidu.com/cgi-bin/genimg?0013286908280168B65F46CEDCD48CF9D46DF47A64587DA42FC48BF1CF8D47BD0D0BC2EE39911C9918D5CF46E79CF94FFA71BC0DC14DAE59197F42F24B4455C205062670A2977101F1A661F7F4716A8BC2C21D586F886CA300E0D42874D6365A1216622D9740163479D1DD416DAE5D70C09EA834F6B9EC307A29CDAF8D0C78FE159402800B113F6039195E5D683695532E4E2FFD8563D732AD19EDFB147B7569B617BDFBE487CE77AE49E75D83BA56B7038971E2081F647A&t=0.7108543934300542";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $image);
curl_setopt($curl, CURLOPT_REFERER, 'http://tieba.baidu.com/f?kw=baidu');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
file_put_contents($image_name, $result);
$size = getimagesize($image_name);
$im = imagecreatefromjpeg($image_name);
imagejpeg($im, 'baidu.jpg',100);
$width = $size[0];
$height = $size[1];
for($x = 1; $x < $width; $x ++)
{
for($y = 1; $y < $height; $y ++)
{
$color = imagecolorat($im, $x, $y);
$_col[$x][] = $color;
if($color < '16777215') $all_color[$color] = $color;
}
}
$n = array_sum($all_color) / count($all_color);
foreach ($_col as $key=>$val)
{
foreach ($val as $k=>$v)
$col[$key] .= $v < $n ? '1':' ';
}
// 去多余行列
foreach ($_col as $key=>$val)
if(array_sum($val) < 1) unset($col[$key]);
foreach ($col as $key=>$val)
{
$val = trim($val);
if(empty($val)) unset($col[$key]);
}
echo '<pre class="brush:php;toolbar:false;">';
print_r($col);
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号