代码审计学习(四) 三个白帽xor挑战

作者: 分类: 代码审计 时间: 2016-04-18 浏览: 4979 评论: 4条评论

很难找到一个密码学的实例,就拿上一期的xor挑战来讲咯
和基友@overlord一起搞了俩天才弄出来,星期四下午刚学的知识,当天晚上就用上了,也是很神奇~
先上代码吧

 <?php
include("config.php");
header("Content-type: text/html; charset=utf-8");

function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {

    $ckey_length = 8;
    $key = md5($key ? $key : '');
    $keya = md5(substr($key, 0, 16));
    $keyb = md5(substr($key, 16, 16));
    $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';

    $cryptkey = hash('sha256', $keya.md5($keya.$keyc));

    $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).md5($keyb.$string).$string;
    $string_length = strlen($string);
    $result = '';
    for ($i=0; $i<$string_length; $i++){
        $result .= $string[$i] ^ $cryptkey[$i % 64];
    }

    if($operation == 'DECODE') {
        if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 32) == md5($keyb.substr($result, 42))) {
            return substr($result, 42);
        } else {
            return '';
        }
    } else {
        return $keyc.str_replace('=', '', base64_encode($result));
    }
}

if (isset($_GET['showSource'])){
    show_source(__FILE__);
    die;
}
    


session_start();

if ($_COOKIE['auth']){
    list($user, $password) = explode("\t", authcode($_COOKIE['auth'], 'DECODE', $secret_key));
    if ($user !='' && $password != ''){
    $sql = "select uid, username, password from users where username='$user'";
    $result = mysql_query($sql);
    if ($result){
        $row = @mysql_fetch_array($result);
        if ($row['password']===md5($password)){
            $_SESSION['uid'] = $row['uid'];
            echo "<div style=\"text-align:left\"><h4>Welcome ".$row['username'].". My lord!</h4></div><br/>";
        }
    }
    }
}


if (!$_SESSION['uid']) {
    echo "<div style=\"text-align:left\"><h4>Decrypt me!: ".authcode(base64_encode($msg), 'ENCODE', $secret_key)."</h4></div><br/>";
}else{
    echo $msg;
}

?>

<!--<a href="/?showSource">view source</a>-->

阅读全文»

代码审计学习(三)CI框架 startbbs

作者: 分类: 代码审计 时间: 2016-04-03 浏览: 5011 评论: 3条评论

更新有点迟了 CI框架看的有点晕(其实是玩了几天游戏,哈哈哈)
startbbs v1.2.3
如果有不对的地方请大牛指正

0x00 背景

先说说框架,第一次看框架,完全懵逼状态。
主要要弄懂怎么路由
列如 http://192.168.131.136/startbbs/index.php/topic/show/1
会找到应用目录(app)控制器目录(controllers)下的topic.php的show方法参数为1
如图

uri演示图.png

阅读全文»

代码审计学习(二)ourphp

作者: 分类: 代码审计 时间: 2016-03-17 浏览: 2685 评论: 1条评论

看了1天 还算有点结果。
这次是ourphp,源码链接

0x01 重置所有用户口令

先看通用的函数 /function/ourphp_function.class.php

dowithsql.png

阅读全文»

0CTF-2016-piapiapia

作者: 分类: CTF 时间: 2016-03-16 浏览: 3733 评论: 1条评论

知道0ctf比较难,没想到这么难..
思路明确,就是不会 T^T
就撸了一道审计题

一个很简单的登陆系统,给了源码,先放一张超萌的喵

0ctf1.png

重要的源码给出

阅读全文»

代码审计学习(一)yzmcms

作者: 分类: 代码审计 时间: 2016-03-10 浏览: 3628 评论: 2条评论

最近系统的看了下细说php,补了下语法知识,感觉看代码顺畅多了。
开个这么久的分类终于开始上文章啦! 至于python版块... 再说吧..
说是cms,其实只是个同学写的小源码,不过作为初学者当做练习还是不错的。
ps:源码是从a5上下载的,传送门

首先看到core/global.func.php的一个函数

源码1.png

有戏,测试一下

测试1.png

阅读全文»