浅析图形验证码平安 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

浅析图形验证码平安

申博_安全预警 申博 104次浏览 未收录 0个评论

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-

0x01 媒介

考证码的界说:

考证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动辨别计算机和人类的图灵测试)的缩写,是一种辨别用户是计算机照样人的大众全自动顺序。能够防备:歹意破解暗码、刷票、论坛注水,有用防备某个黑客对某一个特定注册用户用特定顺序暴力破解体式格局举行赓续的上岸实验,实际上用考证码是如今许多网站通行的体式格局,我们应用对照浅易的体式格局完成了这个功用。这个题目能够由计算机天生并评判,然则必需只需人类能力解答。由于计算机没法解答CAPTCHA的题目,以是回覆出题目的用户就能够被认为是人类。

考证码的作用:

简而言之、防备机械操纵。

考证码分为图形考证码、短信考证码、语音考证码等等。本文仅剖析图形考证码这一种。

浅析图形验证码平安

0x02 基础流程

笔者将天生考证码的流程总结以下:

浅析图形验证码平安

能够存在的题目:

  • 考证码运用后未烧毁。
  • 天生考证码的字符集可控。
  • 考证码寄存地位袒露。
  • 考证码对照失利后仍举行其他对照。
  • 其他对照后考证码未烧毁。
  • 考证码尺寸可控
  • 考证码过于简朴,可随意马虎机械辨认。

0x03 代码复原&实例分享

两段简朴的PHP代码完成天生数字考证码并考证,以下代码复现均基于这两文件完成:

captcha.php

<?php
    session_start();
    $image=imagecreatetruecolor(100,30);
    $bgcolor=imagecolorallocate($image,255,255,255); 
    imagefill($image, 0, 0, $bgcolor);
    $captch_code='';
    //画出4个随机的数字
    for($i=0;$i<4;$i++){
        $fontsize=10;
        $data='0123456789';//字符集
        $fontcontent=substr($data,rand(0,strlen($data)),1); 
        $captch_code.=$fontcontent;     
        $x=($i*100/4)+rand(5,10);
        $y=rand(5,10);
        imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
    }
    $_SESSION['captcha']=$captch_code;
    header('content-type:image/png');
    imagepng($image);

    imagedestroy($image);

index.php

<?php 
header("Content-type: text/html; charset=utf-8");
if(isset($_REQUEST['captcha'])){
  session_start();
  if(strtolower($_REQUEST['captcha'])==$_SESSION['captcha']){
    echo '考证码准确';
    $_SESSION['captcha']=null;
  }else{
    echo '考证码毛病';
    $_SESSION['captcha']=null;
  }
  exit();
}
?>

<html>
<head>
    <meta charset="UTF-8">
    <title>浅析图形考证码平安</title>
</head>
<body>
    <form method="post" action='./index.php'>
        <p>考证码图片:
          <img id="code_img" border="1" src="./captcha.php?r=<?php echo rand();?>" >
          <a href="javascript:void(0)" onclick="document.getElementById('code_img').src='./captcha.php?r='+Math.random()">革新一下</a>
        </p>
        <p>请输入考证码:<input type="text" name="captcha" value=""></p>
        <p><input type="submit" value="提交" style="padding:6px 20px;"></p>
    </form>
</body>
</html>

Round 1:考证码运用后未烧毁

这是最罕见的一种考证码缺点,一般我们也叫考证码复用,代码以下:

浅析图形验证码平安

开辟常遗忘注销session中存入的考证码,攻击者可截断要求包,反复应用同一个考证码便可。

案例:

浅析图形验证码平安

考证码运用后未注销,可截断革新考证码的要求,直接爆破暗码。

Round 2:天生考证码的字符集可控

天生考证码的字符集可控这类状况其实不罕见,现在笔者打仗过的案例出如今ThinkCMF 1.X-2.X,少见,然则剧本化轻易,对照上一中上风在于考证码可控,不消人工输入第一个有用Payload,代码层面以下:

浅析图形验证码平安

案例:

浅析图形验证码平安

详细剖析可移步考证码外部掌握实例,也是笔者的稿子。

Round 3:考证码寄存地位袒露

此类题目涌现比例低于第一种高于第二种,涌现题目的减缓重要在于开辟没把考证码的明文写进session而是挑选了写到其他处所,好比写到Cookie,藏到编码后的某些值内里,藏到图片的字节内里等等。代码层面以下:

浅析图形验证码平安

(藏到Cookie内里,其他状况拜见逻辑让我瓦解之考证码姿态分享)

案例:

全国大学生信息平安比赛—区块链问题剖析

一、前言 前几天全国大学生信息安全竞赛初赛如期进行,在这次比赛中也看到了区块链题目的身影。所以我将题目拿来进行分析,并为后续的比赛赛题提供一些分析思路。 由于本次比赛我并没有参加,所以我并没有Flag等相关信息,但是我拿到了比赛中的相关文件以及合约地址并在此基础上进行的详细分析,希望能帮助到进行研究的同学。 二、题目分析 拿到题目后,我们只得到了两个内容,一个是合约的地址,一个是broken.so。 pragma solidity ^0.4.24;

contract DaysBank {
mapping(address => uint) public balanceOf;
mapping(address =

浅析图形验证码平安

Round 4:考证码对照失利后仍举行其他对照

这类题目涌现的频次和上一中相差无几,题目出如今开辟的登录逻辑上,考证码失利后本该退出页面,开辟只是提醒了一下,并未阻断后续代码的运转,代码完成以下:

浅析图形验证码平安

案例:

浅析图形验证码平安

图片截取自某天主的代码,开辟在对照考证嘛失利后checkFlag的值设置毛病,致使考证码只需不为空就能够继承对照暗码,提醒不影响。有些跑题,可拜见某KCMS5.0 代码审计中恣意用户暗码重置局部,逻辑上是一个原理,也是笔者文稿。

Round 5:其他对照后考证码未烧毁

这类不罕见,然则应用起来很有意义,常出如今有其他校验的处所。代码完成以下:

浅析图形验证码平安

(仿写某很友爱的甲方代码)

考证码并未注销,看起来能够复用,实则弗成,由于背面举行了校验,每次hash都不一样,变相的致使了考证码弗成复用,弗成爆破。

案例:

浅析图形验证码平安

那末怎样应用?如仿写的代码所示,仅仅校验了暗码字段加考证码,用户名并未校验,那末这里就能够输入一个弱暗码(如123456,111111,123123等等),然后反向去遍历用户,猎取准确的口令。

结果:

浅析图形验证码平安

如图,笔者事先运用123456这个弱暗码去遍历用户,胜利猎取到几十个用户口令。

Round 6:考证码尺寸可控

该题目被人们广为存眷源于PHPcms初期版本的背景登录考证码尺寸可控,可用于DDoS。而笔者亲身发掘到如许的题目源于ThinkCMF 1.X-2.X,概况可拜见考证码外部掌握实例中的尺寸可控局部。代码完成以下:

浅析图形验证码平安

案例:

浅析图形验证码平安

(图片截取自笔者的破绽申报)

Round 7:考证码过于简朴,可随意马虎机械辨认。

写到这里仔细的读者会发明,到现在为止给出的代码运转后的真面目都还见过,真面目是如许的:

浅析图形验证码平安

实战场景中甲方考证码大局部都是在这个的基础上加了一些噪点罢了。

辨认实例:

浅析图形验证码平安

0x04 总结

修复套话:

  • 考证码设置为6位并设置超时(一分钟)失效。
  • 发起修正应用顺序源代码,在登录模块中增加对考证码准确性的考证,而且要包管在考证用户名、暗码或其他信息之前起首考证考证码的准确性。

实在感觉:

文中提到的这些考证码的题目在甲方单元中(尤其是事业单元)营业体系触目皆是,更有甚者考证码直接没介入考证,只是放在前端敷衍一下罢了。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明浅析图形验证码平安
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址