php curl 读取discuz注册验证码图片

步骤:(要设置REFERER才能获取

论坛:http://www.test.com


1. 通过 访问member.php?mod=register页面,分析得到验证码图片的URL=$src;

 代码:

  $fileget=vget("http://www.test.com/member.php?mod=register");
   
   //生成验证码的hash
   $pattern="/<input name=\"sechash\" type=\"hidden\" value=\"([A-Za-z0-9]+)\" \/>/s";
   preg_match($pattern,$fileget,$match);
   $idhash=$match[1];
   
   $fcon=vget("http://www.test.com/misc.php?mod=seccode&action=update&idhash={$idhash}&inajax=1&ajaxtarget=seccode_{$idhash}");
   
   $pattern1="/src=\"(.*?)\" class=\"vm\" alt=\"\" \/>/s";
   preg_match($pattern1,$fcon,$match1); 
   $src="http://bbs.py168.com/".$match1[1];


2.通过curl获取验证码图片(因为验证码获取一定要设置 REFERER,这个我选择用curl来实现,简单的copy 是不能获取到图片的!)


getImg($url, $filename); 
/* 
*@通过curl方式获取指定的图片到本地 
*@ 完整的图片地址 
*@ 要存储的文件名 
*/ 
function getImg($url = "", $filename = "") { 
if(is_dir(basename($filename))) { 
echo "The Dir was not exits"; 
Return false; 

//去除URL连接上面可能的引号 
$url = preg_replace( '/(?:^[\'"]+|[\'"\/]+$)/', '', $url ); 
$hander = curl_init(); 
$fp = fopen($filename,'wb'); 
curl_setopt($hander,CURLOPT_URL,$url); 
curl_setopt($hander,CURLOPT_FILE,$fp); 
curl_setopt($hander,CURLOPT_HEADER,0); 
curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1); 
curl_setopt($hander,CURLOPT_REFERER,'http://www.test.commember.php?mod=register');
//curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来 
curl_setopt($hander,CURLOPT_TIMEOUT,60); 


curl_exec($hander); 
curl_close($hander); 
fclose($fp); 
Return true; 


#最后发现discuz x2一个注册验证漏洞:输入验证码后提交数据过去,注册成功; 然后继续填充数据注册,第二次验证码居然为空的时候仍然注册成功;应该是cookie保存了第一次验证成功,第二次就忽略了;神马?就可以不断填充数据进去注册,从而绕开了注册验证码,达到注册机的效果。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值