RCTF 2018线上赛 writeup

苦逼的RCTF,只进行了两天,刚好第二天是5.20,出去xxx了,没法打比赛,难受。比赛结束了,还不准继续提交flag进行正确校验了,更难受。

下面是本次ctf解题思路流程

后面我解出的题会陆续更新上来

MISC

sign

下载附件,发现打不开,以兼容性、管理员权限等还是打不开

丢进winhex初步审视一下16进制没啥发现

用binwalk扫描一下,发现一张png

提取,但是提取不出来,转手动提取,得到图片

本子,铅笔,红酒杯。

通过红酒杯联想到linux wine,用wine打开,得到flag

git

打开下载的附件,里面有个helloword.txt。打开里面没啥发现。。

进.git里面去看看,在COMMIT_EDITMSG处看到

发现flag被删掉了,题目也说file lost了

在ORIG_HEAD

尝试pull,失败,再尝试一下revert呢,得到flag XD

Number Game

直接nc过去看题

sha256加密,四位数还好可以碰撞,脚本跑起来:

sha256enc = "087e72033b1eacecd78845563696b9a449015aeb29a12b0f49c969cafababbb2"
key = "DPgOJtFiF9euj7HX"

for i in strlist:
    code = i[0]+i[1]+i[2]+i[3]
    encinfo = hashlib.sha256(code+key).hexdigest()
    if encinfo == sha256enc:
        print code
        break

可以得到code,输入

来到正题

随意尝试了输入,猜测Nope的规律,大概就是Nope x,y   x表示有x个数字猜对并且位置对了,y表示有y个数字猜对了,但是位置错的

猜测机会只有6次!且每次输入值如果大于10秒左右就提示timeout了,所以人为分析是不可能了(除非你是脑王,能在10秒内见招拆招看到回馈想出下一步要猜的数的话当我在放屁)

其实这个游戏很早就有了(文曲星猜数字了解一下)

网上没有关于python的解题程式这是比较坑的,由于本人之前没有玩过猜数字游戏,迫于无奈只有先去查阅资料了解算法原理,最后自己苦逼码出了python解法

经过8回合(其实实际应该大战了一百回合Orz)的大战,搞到了flag。。。。。

下面是python猜数字解法(本算法是原创算法,不是最优算法,一次挑战可能不成功,多执行几次就可以了,大神勿喷。。。。)

#!/usr/bin/env python
# coding=utf-8
# author:401219180
import time
import socket
import string
import re
import itertools
import hashlib

def returnmsg(data):
    """发送与接收,代替nc"""
    s.send(data)
    time.sleep(1.5)
    msg = s.recv(2048)
    return msg

def createTree(inputstr, dictree):
    """对比集合列表得出a,b生成字典"""
    inputlist = inputstr.split(" ")
    newdictree = {}
    for x in dictree:
        a, b = 0, 0
        for i in range(4):
            if inputlist[i] == x[i]:
                a += 1
                continue
            if inputlist[i] in x:
                b += 1
                continue
        newdictree[x] = a, b
    return newdictree

def createList(dic, result):
    """集合字典里面生成有效集合列表"""
    numlist = []
    for k, v in dic.iteritems():
        if v == result:
            numlist.append(k)
    return numlist

def listvalueTostr(listindex):
    """生成要猜的值"""
    inputstr = listindex[0] + " " + listindex[1] + " " + listindex[2] + " " + listindex[3]
    return inputstr

# 建立nc连接
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("149.28.139.172", 10002))
time.sleep(1)
firstinfo = s.recv(1024)
r = r‘\+(.*?)\)‘
key = re.findall(r, firstinfo)[0]
sha256enc = firstinfo[-78:-14]
print key
print sha256enc

# sha256碰撞,得出xxxx的值
code = ‘‘
strlist = itertools.product(string.letters + string.digits, repeat=4)

for i in strlist:
    code = i[0] + i[1] + i[2] + i[3]
    encinfo = hashlib.sha256(code + key).hexdigest()
    if encinfo == sha256enc:
        print code
        break

print returnmsg(code)

r1 = r‘Nope. (.*?)\n‘ # 正则用于匹配Nope的值

def startgame():
    # 初始化列表
    while 1:  # 打通关了才知道连续大战8回合,所以干脆写个无限循环
        numlist = []
        for i in itertools.permutations(string.digits, 4):
            numlist.append(i)
        input1 = "2 3 4 5"  # 根据本人多次测试,首轮猜2 3 4 5比猜1 2 3 4赢得几率大些Orz....
        while 1:
            dictree1 = createTree(input1, numlist)
            print "guess: " + input1
            recvdata = returnmsg(input1)
            print recvdata
            if "You got it!" in recvdata:
                break

            ab = re.findall(r1, recvdata)[0]
            numlist = createList(dictree1, eval(ab))
            try:
                input1 = listvalueTostr(numlist[0])
            except IndexError, msg:
                print msg

        if "Flag" in recvdata:  # 如果返回的信息里面有Flag,终止while循环
            break

startgame()

未待完续

To be continued...

后面会陆续更新

原文地址:https://www.cnblogs.com/semishigure/p/9066453.html

时间: 2024-11-12 17:38:51

RCTF 2018线上赛 writeup的相关文章

ISCC 2018线上赛 writeup

今天有机会去ISCC2018参加了比赛,个人的感受是比赛题目整体难度不高,就是脑洞特别大,flag形式不明确,拿到flag后也要猜测flag格式,贼坑 废话不多说,以下是本人的解题思路 MISC 0x01 What is that? 下载附件得到图片 看图应该可以猜到flag在下面被截取了,所以我们去修改图片的高度 用十六进制打开图片 在图片的高度那里修改一下数值,我是把01 F4 改成 03 F4 ,高度该多少随意,能看到flag即可 再打开图片,出现flag 然后格式贼坑,根据多种尝试,最后

第二届“强网杯”全国网络安全挑战赛来袭——线上赛

为全面贯彻习主席关于网络安全和信息化工作的一系列重要指示精神,延揽储备锻炼网信领域优秀人才,提升国家网络空间安全能力水平,举办第二届"强网杯"全国网络安全挑战赛.该比赛是面向高等院校和国内信息安全企业的一次国家级网络安全赛事,旨在通过激烈的网络竞赛对抗,培养和提高国家网络安全保障能力和水平,发现网络安全领域优秀人才,提升全民网络空间的安全意识和能力水平. 比赛链接 官方比赛链接地址:https://www.ichunqiu.com/2018qwb?from=bkyl 比赛时间 线上赛报

“玲珑杯”线上赛 Round #17 河南专场

闲来无事呆在寝室打打题,没有想到还有中奖这种操作,超开心的 玲珑杯"线上赛 Round #17 河南专场 Start Time:2017-06-24 12:00:00 End Time:2017-06-24 14:30:00 Refresh Time:2017-06-24 14:48:00 Private A -- Sin your life Time Limit:1s Memory Limit:128MByte Submissions:529Solved:76 DESCRIPTION 给一个正

2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B. Goldbach-米勒拉宾素数判定(大素数)

若干年之前的一道题,当时能写出来还是超级开心的,虽然是个板子题.一直忘记写博客,备忘一下. 米勒拉判大素数,关于米勒拉宾是个什么东西,传送门了解一下:biubiubiu~ B. Goldbach 题目传送门 自己看题意吧,直接贴代码了. 代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<cstdlib> 6 #i

“玲珑杯”线上赛 Round #17 河南专场 B.震惊,99%+的中国人都会算错的问题

1138 - 震惊,99%+的中国人都会算错的问题 Time Limit:4s Memory Limit:128MByte Submissions:304Solved:84 DESCRIPTION 众所周知zhu是一个大厨,zhu一直有自己独特的咸鱼制作技巧.tang是一个咸鱼供应商,他告诉zhu在他那里面有NN条咸鱼(标号从1到N)可以被用来制作.每条咸鱼都有一个咸鱼值KiKi,初始时所有KiKi都是00.zhu是一个特别的人,他有MM个咸数(咸鱼数字), 对于每个咸数xx,他都会让所有满足标

2017CUIT校赛-线上赛

2017Pwnhub杯-CUIT校赛 这是CUIT第十三届校赛啦,也是我参加的第一次校赛. 在被虐到崩溃的过程中也学到了一些东西. 这次比赛是从5.27早上十点打到5.28晚上十点,共36小时,中间睡了五六个小时吧.(我还算是我们队休息时间比较长的了)|(?_?) |?_?) |_?) |?) | ) 这次我队总分1500,校内排名第六. 在下贡献了四道题目,总计450. MISC: 1 RE: 2 PWN: 1 杂项就不多说了,说一下RE和PWN吧. 先放官方给出的wp,我对题目不一样的看法会

河北省2019CTF线上赛部分题解

后期补充,写到哪算哪,不按顺序. 1.Doc什么鬼 基础题,Winhex下打开. 非常明显的zip文件头,将文件直接后缀改成zip. 提取Flag.xml并打开即可得到flag. 2.爱因斯坦 基础题,将misc2.jpg用binwalk打开,可以发现压缩包以及其中的flag.txt. 直接将图片后缀改成zip,需要密码. 用winhex查看16进制数据时发现好多0区域,其中有一段不被0包围的,是压缩包密码:this_is_not_password. 解压即可得到flag. 3.mimi 基础题

IFROG线上赛做过的题目

#6 1068: 找规律 int main(){ int t,n; cin>>t; while(t--){ cin>>n; if(n%3==0)printf("%d\n",n/3); else printf("%d\n",n); } } 1069 二维树状数组 int bit[1234][1234],n; int cha(int x1,int y1,int d){ for(int a=x1;a<=n+1;a+=(a&-a)) f

2016/12/3-问鼎杯线上赛6-2逆向分析

这道题目的文件给我们的是一个压缩包a2ia8-6-2.rar,解压之后得到一个crackme.exe和readme.txt 打开readme.txt可以看到对我们目标的描述. 从这里我们知道,这个就是逆向当中很平常的求serial计算算法(或者更具提示暴力跑?这里我们分析来逆向算法), 并且我们也知道了8位name,还有4位不知道,得到name = "{hdu?b???0_}"但是我们可以根据序列号来计算出来. 拿到一个程序之后,首先使用PEID来查壳,这道题目没有壳,先运行一遍(这里