精华内容
下载资源
问答
  • Bugku—PHP代码审计md5函数 <?php error_reporting(0); $flag = 'flag{test}'; if (isset($_GET['username']) and isset($_GET['password'])) { if ($_GET['username'] == $_GET['password']) print 'Your ...

    Bugku—PHP代码审计—md5函数

    <?php
    error_reporting(0);
    $flag = 'flag{test}';
    if (isset($_GET['username']) and isset($_GET['password'])) {
    if ($_GET['username'] == $_GET['password'])
    print 'Your password can not be your username.';
    else if (md5($_GET['username']) === md5($_GET['password']))
    die('Flag: '.$flag);
    else
    print 'Invalid password';
    }
    ?>
    

    三个等号直接数组绕过呗
    payload:?username[]=1&password[]=2

    等号后面不能一样

    展开全文
  • bugku_PHP代码审计md5加密相等绕过 <?php $md51 = md5('QNKCDZO'); $a = @$_GET['a']; $md52 = @md5($a); if(isset($a)){ if ($a != 'QNKCDZO' && $md51 == $md52) { echo "flag{*}"; } else { echo ...

    bugku_PHP代码审计—md5加密相等绕过

    <?php
    $md51 = md5('QNKCDZO');
    $a = @$_GET['a'];
    $md52 = @md5($a);
    if(isset($a)){
    if ($a != 'QNKCDZO' && $md51 == $md52) {
    echo "flag{*}";
    } else {
    echo "false!!!";
    }}
    else{echo "please input a";}
    ?>
    

    双等号比较绕过:

    QNKCDZO
    
    240610708
    
    s878926199a
    
    s155964671a
    
    s214587387a
    
    s214587387a
    

    payload:?a=s214587387a

    展开全文
  • 通过get得到三个值,v1,v2,v3。...先解决第一层,phpMD5函数漏洞: ①通过== 或者 !=比较两个哈希字符串的时候,如果哈希字符串都以0E开头,则会判断相等。 ②MD5不能比较数组,比如v1[]=1,v2[]=2,M...

    1397720-20180904213605567-1157187519.png

    通过get得到三个值,v1,v2,v3。
    if第一层判断,v1和v2得到的值不一样,但是对它们进行md5加密后的值得相等。
    if第二层判断,v3得到的值得和$flag的值相等,满足这两个条件输出flag。

    先解决第一层,php的MD5函数漏洞:
    ①通过== 或者 !=比较两个哈希字符串的时候,如果哈希字符串都以0E开头,则会判断相等。

    ②MD5不能比较数组,比如v1[]=1v2[]=2,MD5也判断相等,实质上都判断为 null

    所以绕过方法/?v1[]=1&v2[]=2或者找些md5加密后都是0E开头的字符串:/?v1=s878926199a&v2=s155964671a

    第二层,php的strcmp函数漏洞

    strcmp(str1,str2)比较两个字符串,如果相等就返回0。

    在5.3版本前,如果传入的不是字符串,那么会报错,并且return 0,返回0就代表相等了。
    绕过strcmp就想办法传入数组吧,只需要v3[]=3即可。

    最终构造:

    http://118.89.219.210:49162/?v1[]=1&v2[]=2&v3[]=1

    转载于:https://www.cnblogs.com/zaqzzz/p/9588638.html

    展开全文
  • 一进来就是PHP代码审计。 <?php include"url.php"; highlight_file(__FILE__); $a[0] = 'wenhua3104'; $id = $_GET['id']; //传入ID参数 @parse_str($id); //将变量ID进行参数化。... md5($a[0]) == md5...

    一进来就是PHP代码审计。
    在这里插入图片描述

    <?php
    include"url.php";
    highlight_file(__FILE__);
    $a[0] = 'wenhua3104';
    $id = $_GET['id'];	//传入ID参数
    @parse_str($id);	//将变量ID进行参数化。
    if ($a[0] != 'QNKCDZO' && md5($a[0]) == md5('QNKCDZO')) {
        echo $url;
    }
    
    

    第一点就是理解parse_str()函数
    在这里插入图片描述
    第二点就得知道哪些参数的md5值和md5('QNKCDZO')是相等的。这个百度一下就行了。
    在这里插入图片描述
    因为结果是这种科学计数法的,只要也找到结果为0e开头的后面全为数字的,弱类型比较就会成立。
    在这里插入图片描述
    这样就可以了,但是我也踩了个坑,"a[0]=s224534898e"用双引号就不行,但是自己在本地测试是可以通过的,原因未知。。。
    点击链接后进行跳转到新的界面。
    在这里插入图片描述
    先以为搞出来就结束了,没想到又是一次代码审计,不过最近一直在写php,这个就简单了。

    <?php
    highlight_file(__FILE__);
    include"flag.php";
    header("Content-type:text/html;charset=utf-8");
    $referer = $_SERVER['HTTP_REFERER'];
    if(isset($referer)!== false) {
        $savepath = "uploads/" . sha1($_SERVER['REMOTE_ADDR']) . "/";
        if (!is_dir($savepath)) {
            $oldmask = umask(0);
            mkdir($savepath, 0777, true);
            umask($oldmask);
        }
        if ((@$_GET['filename']) && (@$_GET['content'])) {
            $content = $flag;
            file_put_contents("$savepath" . $_GET['filename'], $content); //把flag写到刚刚创建的文件中。
            $msg = 'Flag is here,come on~ ' . $savepath . htmlspecialchars($_GET['filename']) . "";
            echo $msg;
            usleep(100000);		//0.1秒的时间就会将content内容进行改变
            $content = "Too slow!";
            file_put_contents("$savepath" . $_GET['filename'], $content);
        }
        print <<<EOT
    <form action="" method="get">
    <div class="form-group">
    <label for="exampleInputEmail1">Filename</label>
    <input type="text" class="form-control" name="filename" id="exampleInputEmail1" placeholder="Filename">
    </div>
    <div class="form-group">
    <label for="exampleInputPassword1">Content</label>
    <input type="text" class="form-control" name="content" id="exampleInputPassword1" placeholder="Contont">
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
    </form>
    EOT;
    }
    else{
        echo 'you can not see this page';
    }
    ?>
    

    说白了就是条件竞争。通过burpsuiteintruder不停的提交此表单,然后写个py即可。
    在这里插入图片描述
    文件名为11,前面的随机数为自己的IP地址决定的。
    在这里插入图片描述
    提交后拦截发送到intruder,参数设为content,内容无所谓,只要让他不停的发送即可。
    在这里插入图片描述
    py如下,很简单的脚本。

    import requests
    url = "http://39.96.166.21:5001/uploads/b895cfab6ad813e2cba5234e31b4e746ae203049/11"
    while True:
        html = requests.get(url)
        if "slow"  not in html.text:
            print(html.text)
            break
    
    

    运行了以后得出结果
    在这里插入图片描述

    展开全文
  • $md51 = md5('QNKCDZO'); $a = @$_GET['a']; $md52 = @md5($a); if(isset($a)){ if ($a != 'QNKCDZO' && $md51 == $md52) { echo "flag{*}"; } else { echo "false!!!"; }} else{...
  • md5()函数 http://120.24.86.145:9009/18.php 看代码意思就知道,用户名密码不能一样,且两者md5加密后值一样 这样就很简单了,直接将240610708和QNKCDZO分别对上述赋值即可。 即:...
  • php MD5函数

    2020-01-06 17:51:31
    审计中关于MD5()函数的一些问题 MD5碰撞 if (md5(GET[′username′])===md5(_GET['username']) === md5(G​ET[′username′])===md5(_GET[‘password’])) 标志:“===” 参考MD5碰撞的例子 如果是这种对比“==...
  • 代码审计-md5()函数

    2019-10-02 01:01:56
    php error_reporting(0); $flag = 'flag{test}'; if (isset($_GET['username']) and isset($_GET['password'])) { if ($_GET['username'] == $_GET['password']) print 'Your password can not be ...
  • 代码审计_md5()函数

    2019-02-15 19:33:00
    题目链接:... 题解: 打开题目 其PHP代码如下: ...error_reporting() 函数:http://www.w3school.com.cn/php/func_error_reporting.asp ...比较运算符(== 和 ===):http://www.php.net/ma...
  • ... 题目: ...如图,需要传递name和password,同时需要name和...另md5也可以这样操作 因此传入name[]=name&password[]=password 顺利得到结果 转载于:https://www.cnblogs.com/ives/p/ctf_sha1.html
  • bugku ctf 代码审计 md5()函数

    千次阅读 2019-05-25 15:47:51
    php error_reporting(0); $flag = 'flag{test}'; if (isset($_GET['username']) and isset($_GET['password'])) { if ($_GET['username'] == $_GET['password']) print 'Your password can not be your userna...
  • 今天在做关于代码审计的问题遇到了一些问题,现在记录下来并分享,可能是我太笨了,有些问题一直没有明白==对比的时候会进行数据转换,0eXXXXXXXXXX 转成0了,如果比较一个数字和字符串或者比较涉及到数字内容的字符...
  • 标签:原题目链接:http://www.shiyanbar.com/ctf/1787参考答案链接:...听说也有人用md5碰撞o(╯□╰)o格式:CTF{}解题链接: http://ctf4.shiyanbar.com/web/false...
  • 文章目录一、"strcmp比较字符串"二、"md5()函数"完 一、“strcmp比较字符串” 本题使用strcmp()函数漏洞实现,基于PHP5.3以前版本 若strcmp传入参数并非未字符串时,虽然会报错但是函数合法 <?php $flag = "flag{...
  • 那我们来分析一下,get传参,有两个变量v1 和v2,两个变量必须同时存在,ctype_alpha(v1)判断变量是否全是字母,is_numeric(v2)是判断变量v2是否都是数字,还有一个是判断md5之后是否相同,所以我在网上找了md5之后...
  • 今天在做关于代码审计的问题遇到了一些问题,现在记录下来并分享,可能是我太笨了,有些问题一直没有明白 ==对比的时候会进行数据转换,0eXXXXXXXXXX 转成0了,如果...var_dump(md5('240610708') == md5('QNKCDZO'...
  • 1、弱类型整数大小比较绕过 看这段代码,知道是要passward不是数字还要大于366才能得到flag,(php弱类型漏洞) 得到flag 2、md5加密相等绕过
  • MD5弱类型比较 在代码审计当中经常见到,所以写了一个python脚本,有事没事跑一下,积累一些字符串。 网上大多都是看到《0e开头MD5值小结》这篇文章,这里希望给大家一个可自定义字符的自动化脚本,方便大家。 如果...
  • bugku——md5()函数

    2019-09-01 10:02:33
    打开题目,又是MD5函数 以为又是一个套路直接md5('240610708') == md5('QNKCDZO')去尝试 结果构造http://123.206.87.240:9009/18.php?username=240610708&&password=QNKCDZO一直失败 后来再审计代码,...
  • PHP代码审计

    2020-07-03 16:15:17
    php漏洞函数: ... @md5($_GET['user']) == @md5($_GET['pass']) http://xxx.com?user[]=1&pass[]=2 extract 覆盖绕过 http://xxx.com?param preg_replace(/select/,"",$sele); http://xx.com/a.php?p
  • CG CTF-Web-md5 collision

    2020-09-05 10:35:24
    前言 挺简单的题目,但是我不知道这个知识点。之前说过PHP弱类型比较的内容我没有完全去看,等...$md51 = md5('QNKCDZO'); $a = @$_GET['a']; $md52 = @md5($a); if(isset($a)){ if ($a != 'QNKCDZO' && $md51
  • Bugku-web16-md5

    2021-04-06 17:30:42
    md5 bak备份 代码审计 <?php include_once "flag.php"; //文件包含,只包含一次,若文件被包含过则不再执行 ini_set("display_errors", 0); // $str = strstr($_SERVER['REQUEST_URI'], '?'); /*strstr(str1,...
  • 文章目录前言正文intval()使用不当导致安全漏洞的分析switch()in_array()PHP弱类型的特性"."被替换成"_"unsetserialize 和 unserialize漏洞session 反序列化漏洞MD5 compare漏洞ereg函数漏洞:00截断Strcmp()漏洞is_...

空空如也

空空如也

1 2 3 4 5
收藏数 89
精华内容 35
关键字:

md5php审计