php网页的密码验证绕过求助(简单代码)
初步判断,密码为yixiwangmengsicengjian
原理
if($LoginPassword!=''){ 表示$LoginPassword不能为空
而$LoginPassword 的值来自于$LoginPassword=$UserList[$LoginUser];
而$UserList这个数组只有一个元素, admin
那$UserList[$LoginUser] 只能是$UserList['admin'];
而很明显$UserList['admin'] 的值就是 yixiwangmengsicengjian
表单方面, 一个输入框, 一个密码框, 输入框的name属性是User 密码框的name属性是 Password
如何用PHP生成验证码
PHP生成验证码的原理:使用PHP的GD库,生成一张带验证码的图片,并将验证码保存在Session中。PHP生成验证码的大致流程有:
1、产生一张png的图片;
2、为图片设置背景色;
3、设置字体颜色和样式;
4、产生4位数的随机的验证码;
5、把产生的每个字符调整旋转角度和位置画到png图片上;
6、加入噪点和干扰线防止注册机器分析原图片来恶意破解验证码;
7、输出图片;
8、释放图片所占内存。
session_start();
getCode(4,60,20);
function getCode($num,$w,$h) {
$code = "";
for ($i = 0; $i $num; $i++) {
$code .= rand(0, 9);
}
//4位验证码也可以用rand(1000,9999)直接生成
//将生成的验证码写入session,备验证时用
$_SESSION["helloweba_num"] = $code;
//创建图片,定义颜色值
header("Content-type: image/PNG");
$im = imagecreate($w, $h);
$black = imagecolorallocate($im, 0, 0, 0);
$gray = imagecolorallocate($im, 200, 200, 200);
$bgcolor = imagecolorallocate($im, 255, 255, 255);
//填充背景
imagefill($im, 0, 0, $gray);
//画边框
imagerectangle($im, 0, 0, $w-1, $h-1, $black);
//随机绘制两条虚线,起干扰作用
$style = array ($black,$black,$black,$black,$black,
$gray,$gray,$gray,$gray,$gray
);
imagesetstyle($im, $style);
$y1 = rand(0, $h);
$y2 = rand(0, $h);
$y3 = rand(0, $h);
$y4 = rand(0, $h);
imageline($im, 0, $y1, $w, $y3, IMG_COLOR_STYLED);
imageline($im, 0, $y2, $w, $y4, IMG_COLOR_STYLED);
//在画布上随机生成大量黑点,起干扰作用;
for ($i = 0; $i 80; $i++) {
imagesetpixel($im, rand(0, $w), rand(0, $h), $black);
}
//将数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
$strx = rand(3, 8);
for ($i = 0; $i $num; $i++) {
$strpos = rand(1, 6);
imagestring($im, 5, $strx, $strpos, substr($code, $i, 1), $black);
$strx += rand(8, 12);
}
imagepng($im);//输出图片
imagedestroy($im);//释放图片所占内存
}
为什么PHP写的验证码会被暴力破解,如何能做到不被暴力破解呢?还有验证码一定要依赖COOKIE和SESSION吗?
验证码这个东西本身就是一个防止暴力破解的机制,用于区分机器和人的,跟用什么写的是没有关系的。你可以设置以下逻辑来防止验证码被破解:
验证码更新机制,错误输入后换一个验证码
IP封锁机制,错误输入五次验证码后锁死相关IP
php你的验证码安全码?
验证码的作用主要有防止暴力破解,防止恶意灌水,防止自动提交等,在这里我就不多说了。验证码的类型也有数字、字母等,甚至厉害点的还有中文的。但是不管你的验证码多么厉害,只要你在表单验证中存在如下的失误,你的验证码就形同虚设!
验证码的一般思路,就是每次登陆的地方访问一个脚本文件,该文件生成含验证码的图片并将值写入到Session里,提交的时候验证登陆的脚本就会判断提交的验证码是否与Session里的一致。
问题出现了,在登陆密码错误之后,我们不去访问生成验证图片的文件,那么如果Session中的验证码没有被清空,此时验证码就是跟上次的一样,辛辛苦苦构建的验证码机制就形同虚设了。
下面我们先来看一段有问题的代码:
登陆部分:
CODE:
tr
td管理员姓名:
php curl 模拟登陆的问题?验证码怎么破?
网络技术飞速发展,红黑较量也是日新月异,我们要想取得长久的胜利,就不能得过且过,想绕过一切验证码,是不可能实现的。
建议:
用curl模拟登陆页面获取验证码图片,手工录入
当然了,如果后台是你自己的就不要验证码就OK了,但这是个 个例,不是泛指,希望能帮到你。
关于php网站后台加密的破解
常规的网站破解是通过SQL入注来破解,如果程序员注重了SQL入注那这个方法就很难行得通。二者就是采用暴力猜密码的方法,如果登录设置了验证码难度就会很大。
破解这东西还是需要自己花很多时间和精力去琢磨滴。
php做验证码输出图片显示的是乱码,怎么破
把第一个header()去掉,第二个header()里面写错了
?php
header("Content-Type:image/jpg");
$image=imagecreate(300,80);
$bgcolor=imagecolorallocate($image,200,60,90);
$write=imagecolorallocate($image,0,0,0);
imagestring($image,5,80,30,"I Like PHP",$write);
imagejpeg($image);
imagedestroy($image);
?
PHP中模拟登录的验证码问题应该如何解决
基本思路:
首先获取一个cookies值,再带着这个cookies去获取验证码图片,你再带着验证码值和登录数据去模拟post登录。下面是一个模拟获取验证码的。
这里忽略获取cookies的过程。注意文件为UTF-8无BOM格式
?php
header('Content-Type:image/png');
$url = "http://hbyw.e21.edu.cn/global/gd.php";//图片链接
$ch = curl_init();
//Cookie:PHPSESSID=121b1127dcded8702c6a1e702c40eca4
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_COOKIE,'PHPSESSID=121b1127dcded8702c6a1e702c40eca4');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT,0);//忽略超时
curl_setopt($ch, CURLOPT_NOBODY, false);
$str = curl_exec($ch);
curl_close($ch);