https://www.ctfer.vip/problem
回来了惹,这几天本来打省赛的,可惜疫情和考试原因没去到,我们队的另一个队友也因为这方面原因,导致我们队没去,还是蛮可惜的,这回来第一天还是来点misc吧,web题后面再来,会补的= =。
1.[BJDCTF 2020]认真你就输了
打开压缩包,看到xls文件,这种wps类型的基本都是不是打开就是转换成压缩包,因为他本质就是压缩包= =。了解一下xls这类文件转换成压缩包的结构还是挺好的,这里就直接找到了flag.txt,其实你010打开应该也看到的。:
flag{M9eVfi2Pcs#}
2.[SWPUCTF 2021 新生赛]Bill
提示: 计算总价,flag为NSSCTF{账单金额}。不要被表象欺骗
010打开,看到提示:
看到结构,提取出来:
就跟我们上一题所说,本质是压缩包,改成xls后看到:
这里其实之前做DAS也有一道题类似,因为和出题人认识,所以知道他有这方面借鉴,看了一眼可以直接用那次的脚本:
好吧找不到了,找到了其他大佬脚本,感谢,同时发现这里如果直接改后缀不提取会提示有密码,这里属于是凑巧了。:
https://www.likecs.com/show-307127571.html#sc=23708
这里记得下载openpyxl,一般 pip install openpyxl就行了,注意吧xls文件放到脚本目录.
import openpyxl
import re
def trad_to_int(money):
# 转换字典
trad_dict = {
'零':0,
'壹':1,
'贰':2,
'叁':3,
'肆':4,
'伍':5,
'陆':6,
'柒':7,
'捌':8,
'玖':9,
'拾':10,
'佰':100,
'仟':1000,
'万':10000,
'亿':100000000,
'角':0.1,
'分':0.01
}
trad = re.search(r"[零壹贰叁肆伍陆柒捌玖拾佰仟亿角分]+", money)
if trad is not None:
num = 0
add = 0
sum = 0
for i in money:
if i in ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']:
add = trad_dict[i]
sum = sum + add
elif i in ['拾','佰','仟','亿','角','分']:
num = add * trad_dict[i]
sum = sum - add
sum = sum + num
add = num
elif i == '万' or i == '亿':
sum = sum * trad_dict[i]
return float(sum)
else:
return money
def main():
submoneyCN = ["", "拾", "佰", "仟"]
numsCN = {"零": 0, "壹": 1, "贰": 2, "叁": 3, "肆": 4, "伍": 5, "陆": 6, "柒": 7, "捌": 8, "玖": 9}
w = openpyxl.open("00000025.xlsx")
ws = w.active
# 获取第一列 即单件商品金额
t = ws['A']
t1=[]
for x in range(1,len(t)):
t1.append(trad_to_int(t[x].value))
print(t1)
# 获取第二列并处理
t = ws['B']
t2=[]
for x in range(1,len(t)):
t2.append(trad_to_int(t[x].value))
print(t2)
r=0
for index in range(0,len(t2)):
r+=float(t1[index])*float(t2[index])
print(r)
if __name__ == '__main__':
main()
这里他有特殊符号①啊这些,需要我们手动转,然后因为脚本全是大写,所以需要全转大写字符,然后跑脚本:
最后得到:{5030782.26}
3.[NISACTF 2022]where_is_here
Chenser打算约他的青梅竹马去旅游,在网上看到这个旅馆,觉得很不错,你能帮忙找一下这家旅店的预约电话吗?
信息检索题目:
一般丢到各种搜索软件或者旅行软件看就行了,这里是旅店其实丢旅行软件好一点。
这里丢百度看到:
当然这张图不标准,你也会看到厦门很多旅店挂的画一样,我记得我当时打这个比赛找到个特准的图,找不到了,然后这题很坑的地方在你百度找的号码很多是错的,当然有可能是我的问题,最后在携程上找到的号码才对:
当然你现在搜得到:厦门鼓浪屿奢华雅筑主题酒店,手机号还是得上携程搜pc端我没看到。
最后得到:{厦门市思明区鼓浪屿康泰路25号17746048875}
4.[CISCN 2018]Picture
国赛题,上难度,010打开发现没有压缩包,run 了 template发现不是单纯的jpg,于是切binwalk看一下:
jpg的文件结尾是FF D9,搜了一下zlib的开始是:78 9C,010搜一下:
这里提前出来需要脚本转换,ctrl+shift+c把hex码提取出来:
感谢大佬脚本:
https://blog.csdn.net/uiop_uiop_uiop/article/details/80153603
#python2
import zlib
import binascii
import base64
data = "789CAD50CB92A2500CFD2016C2151516BD08EFDB80C54304D979012FF2101015E4EB1B6AA6BB66379B4EA59293E4544E2A3E078A24B900B383520E153BF6FC280A219D6B9587252EE184C432CE9C8C5EC0B997E92DB7754489B05D8161B43EABDB9D7CF7C41E71C4E1D77E5767BDC534AEDE6CD8AA98F809278F6EC4FDC138A20DC3D50775F7D21291561B1C5C2FBB0BB7BA1BB835BA6A77EB4C8730C8DEDE3CEB39E4815093D5C04916B87805FFBB535E867F0CFF20A920C8AB640AF4BB01D20CB59742F9E8CC0EAA40A17EE4E2FD008737C86764A0872D056AAF49F42F7F5E7D5CB0312CE209680F378BBC86209EDA577E1DB9ACE9143C83CD5CEC0CD45CE65A71DB20A9B5220E3FF313EAA9A973AF64EDD2A43ECEBD0D8BF57D4EF481125D9B52B9DC2A6E43B11AB7440F282EC6218BF64D1C8E3D9E80C1D785573D631F464B965A7205818462998663E550D6C432D07FB5C3FAF826ACD7A675359D43F1E9459F6FB2C6DB1FCEF997B20F82E54BC329DA4F2912DFB10C3BF3FB17001F5F8A8CC192"
result = binascii.hexlify(zlib.decompress(data))
print result
result = result.decode('hex')
print result
r = base64.b64decode(result)
print r
f = open(r"2.zip","wb")
f.write(r)
f.close()
踏马的我python3运行不起,还要换python。
这里看了一下wp,binwalk -e也可以,这里把提取的zlib文件-e一下,提出文件一看就是base编码。
这里别人没用脚本的工具直接输出了16进制,我的16进制还带翻译,很乱,修改了一下脚本:
import binascii
import base64
S="S1ADBBQAAQAAADkwl0xs4x98WgAAAE4AAAAEAAAAY29kZePegfAPrkdnhMG2gb86/AHHpS0GMqCrR9s21bP43SqmesL+oQGo50ljz4zIctqxIsTHV25+1mTE7vFc9gl5IUif7f1/rHIpHql7nqKPb+2M6nRLuwhU8mb/w1BLAQI/ABQAAQAAADkwl0xs4x98WgAAAE4AAAAEACQAAAAAAAAAIAAAAAAAAABjb2RlCgAgAAAAAAABABgAAFvDg4Xa0wE8gAmth9rTATyACa2H2tMBUEsFBgAAAAABAAEAVgAAAHwAAADcAFtQeXRob24gMi43XQ0KPj4+IKh9qH2ofQ0KDQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6DQogIEZpbGUgIjxweXNoZWxsIzA+IiwgbGluZSAxLCBpbiA8bW9kdWxlPg0KICAgIKh9qH2ofQ0KWmVyb0RpdmlzaW9uRXJyb3I6IKh9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofah9qH2ofSA8LSBwYXNzd29yZCA7KQ0KPj4+IAA="
S=base64.b64decode(S).hex()
print(S)
修复后得到:
4b5003041400010000003930974c6ce31f7c5a0000004e00000004000000636f6465e3de81f00fae476784c1b681bf3afc01c7a52d0632a0ab47db36d5b3f8dd2aa67ac2fea101a8e74963cf8cc872dab122c4c7576e7ed664c4eef15cf6097921489fedfd7fac72291ea97b9ea28f6fed8cea744bbb0854f266ffc3504b01023f001400010000003930974c6ce31f7c5a0000004e000000040024000000000000002000000000000000636f64650a0020000000000001001800005bc38385dad3013c8009ad87dad3013c8009ad87dad301504b05060000000001000100560000007c000000dc005b507974686f6e20322e375d0d0a3e3e3e20a87da87da87d0d0a0d0a54726163656261636b20286d6f737420726563656e742063616c6c206c617374293a0d0a202046696c6520223c70797368656c6c23303e222c206c696e6520312c20696e203c6d6f64756c653e0d0a20202020a87da87da87d0d0a5a65726f4469766973696f6e4572726f723a20a87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87da87d203c2d2070617373776f7264203b290d0a3e3e3e2000
小技巧,把这串字符丢进txt,在010用import hex打开:
看到下面还要password猜测开头kp可能是PK,整理乱码花了一些时间:
这里下面password:
[Python 2.7] >>> ▆▆▆ Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> ▆▆▆ ZeroDivisionError: ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ <- password ;) >>>
百度搜索到报错信息:
得到密码:integer division or modulo by zero
打开发现:G0TE30TY[,C,X.$%&,C@Y,T5".#5%0C%"-#,Y04)&1C8Q-S,Q.49]`
之前做到过,这是uuencode,解码得到flag:
CISCN{2388AF2893EB85EB1B439ABFF617319F}
这题有点折磨环境不对的,桑心。
期待我们下一题再见!