starctf-2023

佛系solo了一天,最后还是和上次的SCTF一样都是48名,感觉一个人做时间完全不够用,还有几道re和pwn感觉都可以做,但是已经没什么时间了。

Re

Gorev

很简单的加密,用key对输入进行逐字节异或,但是key进行随机的位置交换,位数不多并且知道flag的格式,可以尝试手动恢复。

1
2
3
4
5
6
7
8
9
10
11
res = "fiAGBkgXN3McFy9hAHRfCwYaIjQCRDFsXC8ZYBFmEDU="
import base64

res = [i for i in base64.b64decode(res)]
# key="cH@t_GpT_15_h3R3"
key="TcR@3t_3hp_5_G1H"
key = [ord(i) for i in key]

for i in range(len(res)):
res[i]=res[i]^key[i%len(key)]
print(bytes(res))

Ezcode

chall是一个下面这样子的脚本,看样子是powershell,题目中也有提示是windows用户。

1
2
('(' | % { ${-``} = + $() } { ${]} = ${-``} } { ${!;*} = ++  ${-``} } { ${*@ } = (  ${-``} = ${-``} + ${!;*}  ) } { ${=$``} = (  ${-``} = ${-``} + ${!;*}  ) } { ${ ]} = (${-``} = ${-``} + ${!;*}  ) } { ${!} = (${-``} = ${-``} + ${!;*}  ) } { ${#.} = (${-``} = ${-``} + ${!;*}  ) } { ${(} = (${-``} = ${-``} + ${!;*}  ) } { ${)``} = (${-``} = ${-``} + ${!;*}  ) } { ${``*%} = (${-``} = ${-``} + ${!;*}) } { ${$%} = "[" + "$(@{  })"[${(}  ] + "$(@{  })"[  "${!;*}${``*%}"  ] + "$(@{  }  )  "[  "${*@ }${]}"  ] + "$?"[${!;*}  ] + "]" } { ${-``} = "".("$(  @{}  )  "[  "${!;*}${ ]}"  ] + "$(@{})  "[  "${!;*}${#.}"] + "$(  @{  }  )"[${]}] + "$(@{}  )"[${ ]}] + "$?  "[  ${!;*}] + "$(  @{})"[${=$``}  ]) } { ${-``} = "$(@{  }  )"[  "${!;*}" + "${ ]}"] + "$(@{  })  "[${ ]}  ] + "${-``}"["${*@ }" + "${(}"  ] }  ) ;
……

去除最后的管道看到一些输出,根据输出解两次base64得到的是假flag,继续分析代码,发现这段代码只进行了输出,并没有真正执行,找到真正执行的代码,用write-output输出出来

1
[CHar]99+[CHar]108+[CHar]97+[CHar]115+[CHar]115+[CHar]32+[CHar]99+[CHar]104+[CHar]105+[CHar]112+[CHar]101+[CHar]114+[CHar]40+[CHar]41+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]100+[CHar]101+[CHar]102+[CHar]32+[CHar]95+[CHar]95+[CHar]105+[CHar]110+[CHar]105+[CHar]116+[CHar]95+[CHar]95+[CHar]40+[CHar]115+[CHar]101+[CHar]108+[CHar]102+[CHar]41+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]115+[CHar]101+[CHar]108+[CHar]102+[CHar]46+[CHar]100+[CHar]32+[CHar]61+[CHar]32+[CHar]48+[CHar]120+[CHar]56+[CHar]55+[CHar]54+[CHar]53+[CHar]52+[CHar]51+[CHar]50+[CHar]49+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]107+[CHar]48+[CHar]32+[CHar]61+[CHar]32+[CHar]48+[CHar]120+[CHar]54+[CHar]55+[CHar]52+[CHar]53+[CHar]50+[CHar]51+[CHar]48+[CHar]49+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]107+[CHar]49+[CHar]32+[CHar]61+[CHar]32+[CHar]48+[CHar]120+[CHar]101+[CHar]102+[CHar]99+[CHar]100+[CHar]97+[CHar]98+[CHar]56+[CHar]57+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]107+[CHar]50+[CHar]32+[CHar]61+[CHar]32+[CHar]48+[CHar]120+[CHar]57+[CHar]56+[CHar]98+[CHar]97+[CHar]100+[CHar]99+[CHar]102+[CHar]101+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]107+[CHar]51+[CHar]32+[CHar]61+[CHar]32+[CHar]48+[CHar]120+[CHar]49+[CHar]48+[CHar]51+[CHar]50+[CHar]53+[CHar]52+[CHar]55+[CHar]54+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]115+[CHar]101+[CHar]108+[CHar]102+[CHar]46+[CHar]107+[CHar]32+[CHar]61+[CHar]32+[CHar]91+[CHar]107+[CHar]48+[CHar]44+[CHar]32+[CHar]107+[CHar]49+[CHar]44+[CHar]32+[CHar]107+[CHar]50+[CHar]44+[CHar]32+[CHar]107+[CHar]51+[CHar]93+[CHar]10+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]100+[CHar]101+[CHar]102+[CHar]32+[CHar]101+[CHar]40+[CHar]115+[CHar]101+[CHar]108+[CHar]102+[CHar]44+[CHar]32+[CHar]110+[CHar]44+[CHar]32+[CHar]118+[CHar]41+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]102+[CHar]114+[CHar]111+[CHar]109+[CHar]32+[CHar]99+[CHar]116+[CHar]121+[CHar]112+[CHar]101+[CHar]115+[CHar]32+[CHar]105+[CHar]109+[CHar]112+[CHar]111+[CHar]114+[CHar]116+[CHar]32+[CHar]99+[CHar]95+[CHar]117+[CHar]105+[CHar]110+[CHar]116+[CHar]51+[CHar]50+[CHar]10+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]100+[CHar]101+[CHar]102+[CHar]32+[CHar]77+[CHar]88+[CHar]40+[CHar]122+[CHar]44+[CHar]32+[CHar]121+[CHar]44+[CHar]32+[CHar]116+[CHar]111+[CHar]116+[CHar]97+[CHar]108+[CHar]44+[CHar]32+[CHar]107+[CHar]101+[CHar]121+[CHar]44+[CHar]32+[CHar]112+[CHar]44+[CHar]32+[CHar]101+[CHar]41+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]116+[CHar]101+[CHar]109+[CHar]112+[CHar]49+[CHar]32+[CHar]61+[CHar]32+[CHar]40+[CHar]122+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]32+[CHar]62+[CHar]62+[CHar]32+[CHar]54+[CHar]32+[CHar]94+[CHar]32+[CHar]121+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]32+[CHar]60+[CHar]60+[CHar]32+[CHar]52+[CHar]41+[CHar]32+[CHar]43+[CHar]32+[CHar]92+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]40+[CHar]121+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]32+[CHar]62+[CHar]62+[CHar]32+[CHar]50+[CHar]32+[CHar]94+[CHar]32+[CHar]122+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]32+[CHar]60+[CHar]60+[CHar]32+[CHar]53+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]116+[CHar]101+[CHar]109+[CHar]112+[CHar]50+[CHar]32+[CHar]61+[CHar]32+[CHar]40+[CHar]116+[CHar]111+[CHar]116+[CHar]97+[CHar]108+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]32+[CHar]94+[CHar]32+[CHar]121+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]41+[CHar]32+[CHar]43+[CHar]32+[CHar]92+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]40+[CHar]107+[CHar]101+[CHar]121+[CHar]91+[CHar]40+[CHar]112+[CHar]32+[CHar]38+[CHar]32+[CHar]51+[CHar]41+[CHar]32+[CHar]94+[CHar]32+[CHar]101+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]93+[CHar]32+[CHar]94+[CHar]32+[CHar]122+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]114+[CHar]101+[CHar]116+[CHar]117+[CHar]114+[CHar]110+[CHar]32+[CHar]99+[CHar]95+[CHar]117+[CHar]105+[CHar]110+[CHar]116+[CHar]51+[CHar]50+[CHar]40+[CHar]116+[CHar]101+[CHar]109+[CHar]112+[CHar]49+[CHar]32+[CHar]94+[CHar]32+[CHar]116+[CHar]101+[CHar]109+[CHar]112+[CHar]50+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]107+[CHar]101+[CHar]121+[CHar]32+[CHar]61+[CHar]32+[CHar]115+[CHar]101+[CHar]108+[CHar]102+[CHar]46+[CHar]107+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]100+[CHar]101+[CHar]108+[CHar]116+[CHar]97+[CHar]32+[CHar]61+[CHar]32+[CHar]115+[CHar]101+[CHar]108+[CHar]102+[CHar]46+[CHar]100+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]114+[CHar]111+[CHar]117+[CHar]110+[CHar]100+[CHar]115+[CHar]32+[CHar]61+[CHar]32+[CHar]54+[CHar]32+[CHar]43+[CHar]32+[CHar]53+[CHar]50+[CHar]47+[CHar]47+[CHar]110+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]116+[CHar]111+[CHar]116+[CHar]97+[CHar]108+[CHar]32+[CHar]61+[CHar]32+[CHar]99+[CHar]95+[CHar]117+[CHar]105+[CHar]110+[CHar]116+[CHar]51+[CHar]50+[CHar]40+[CHar]48+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]122+[CHar]32+[CHar]61+[CHar]32+[CHar]99+[CHar]95+[CHar]117+[CHar]105+[CHar]110+[CHar]116+[CHar]51+[CHar]50+[CHar]40+[CHar]118+[CHar]91+[CHar]110+[CHar]45+[CHar]49+[CHar]93+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]101+[CHar]32+[CHar]61+[CHar]32+[CHar]99+[CHar]95+[CHar]117+[CHar]105+[CHar]110+[CHar]116+[CHar]51+[CHar]50+[CHar]40+[CHar]48+[CHar]41+[CHar]10+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]119+[CHar]104+[CHar]105+[CHar]108+[CHar]101+[CHar]32+[CHar]114+[CHar]111+[CHar]117+[CHar]110+[CHar]100+[CHar]115+[CHar]32+[CHar]62+[CHar]32+[CHar]48+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]116+[CHar]111+[CHar]116+[CHar]97+[CHar]108+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]32+[CHar]43+[CHar]61+[CHar]32+[CHar]100+[CHar]101+[CHar]108+[CHar]116+[CHar]97+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]101+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]32+[CHar]61+[CHar]32+[CHar]40+[CHar]116+[CHar]111+[CHar]116+[CHar]97+[CHar]108+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]32+[CHar]62+[CHar]62+[CHar]32+[CHar]50+[CHar]41+[CHar]32+[CHar]38+[CHar]32+[CHar]51+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]102+[CHar]111+[CHar]114+[CHar]32+[CHar]112+[CHar]32+[CHar]105+[CHar]110+[CHar]32+[CHar]114+[CHar]97+[CHar]110+[CHar]103+[CHar]101+[CHar]40+[CHar]110+[CHar]45+[CHar]49+[CHar]41+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]121+[CHar]32+[CHar]61+[CHar]32+[CHar]99+[CHar]95+[CHar]117+[CHar]105+[CHar]110+[CHar]116+[CHar]51+[CHar]50+[CHar]40+[CHar]118+[CHar]91+[CHar]112+[CHar]43+[CHar]49+[CHar]93+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]118+[CHar]91+[CHar]112+[CHar]93+[CHar]32+[CHar]61+[CHar]32+[CHar]99+[CHar]95+[CHar]117+[CHar]105+[CHar]110+[CHar]116+[CHar]51+[CHar]50+[CHar]40+[CHar]118+[CHar]91+[CHar]112+[CHar]93+[CHar]32+[CHar]43+[CHar]32+[CHar]77+[CHar]88+[CHar]40+[CHar]122+[CHar]44+[CHar]32+[CHar]121+[CHar]44+[CHar]32+[CHar]116+[CHar]111+[CHar]116+[CHar]97+[CHar]108+[CHar]44+[CHar]32+[CHar]107+[CHar]101+[CHar]121+[CHar]44+[CHar]32+[CHar]112+[CHar]44+[CHar]32+[CHar]101+[CHar]41+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]41+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]122+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]32+[CHar]61+[CHar]32+[CHar]118+[CHar]91+[CHar]112+[CHar]93+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]121+[CHar]32+[CHar]61+[CHar]32+[CHar]99+[CHar]95+[CHar]117+[CHar]105+[CHar]110+[CHar]116+[CHar]51+[CHar]50+[CHar]40+[CHar]118+[CHar]91+[CHar]48+[CHar]93+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]118+[CHar]91+[CHar]110+[CHar]45+[CHar]49+[CHar]93+[CHar]32+[CHar]61+[CHar]32+[CHar]99+[CHar]95+[CHar]117+[CHar]105+[CHar]110+[CHar]116+[CHar]51+[CHar]50+[CHar]40+[CHar]118+[CHar]91+[CHar]110+[CHar]45+[CHar]49+[CHar]93+[CHar]32+[CHar]43+[CHar]32+[CHar]77+[CHar]88+[CHar]40+[CHar]122+[CHar]44+[CHar]32+[CHar]121+[CHar]44+[CHar]32+[CHar]116+[CHar]111+[CHar]116+[CHar]97+[CHar]108+[CHar]44+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]107+[CHar]101+[CHar]121+[CHar]44+[CHar]32+[CHar]110+[CHar]45+[CHar]49+[CHar]44+[CHar]32+[CHar]101+[CHar]41+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]41+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]122+[CHar]46+[CHar]118+[CHar]97+[CHar]108+[CHar]117+[CHar]101+[CHar]32+[CHar]61+[CHar]32+[CHar]118+[CHar]91+[CHar]110+[CHar]45+[CHar]49+[CHar]93+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]114+[CHar]111+[CHar]117+[CHar]110+[CHar]100+[CHar]115+[CHar]32+[CHar]45+[CHar]61+[CHar]32+[CHar]49+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]114+[CHar]101+[CHar]116+[CHar]117+[CHar]114+[CHar]110+[CHar]32+[CHar]118+[CHar]10+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]100+[CHar]101+[CHar]102+[CHar]32+[CHar]98+[CHar]121+[CHar]116+[CHar]101+[CHar]115+[CHar]50+[CHar]105+[CHar]110+[CHar]116+[CHar]115+[CHar]40+[CHar]115+[CHar]101+[CHar]108+[CHar]102+[CHar]44+[CHar]99+[CHar]115+[CHar]58+[CHar]98+[CHar]121+[CHar]116+[CHar]101+[CHar]115+[CHar]41+[CHar]45+[CHar]62+[CHar]108+[CHar]105+[CHar]115+[CHar]116+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]110+[CHar]101+[CHar]119+[CHar]95+[CHar]108+[CHar]101+[CHar]110+[CHar]103+[CHar]116+[CHar]104+[CHar]61+[CHar]108+[CHar]101+[CHar]110+[CHar]40+[CHar]99+[CHar]115+[CHar]41+[CHar]43+[CHar]40+[CHar]56+[CHar]45+[CHar]108+[CHar]101+[CHar]110+[CHar]40+[CHar]99+[CHar]115+[CHar]41+[CHar]37+[CHar]56+[CHar]41+[CHar]37+[CHar]56+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]98+[CHar]97+[CHar]114+[CHar]114+[CHar]97+[CHar]121+[CHar]61+[CHar]99+[CHar]115+[CHar]46+[CHar]108+[CHar]106+[CHar]117+[CHar]115+[CHar]116+[CHar]40+[CHar]110+[CHar]101+[CHar]119+[CHar]95+[CHar]108+[CHar]101+[CHar]110+[CHar]103+[CHar]116+[CHar]104+[CHar]44+[CHar]98+[CHar]39+[CHar]92+[CHar]120+[CHar]48+[CHar]48+[CHar]39+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]105+[CHar]61+[CHar]48+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]118+[CHar]61+[CHar]91+[CHar]93+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]119+[CHar]104+[CHar]105+[CHar]108+[CHar]101+[CHar]32+[CHar]105+[CHar]32+[CHar]60+[CHar]32+[CHar]110+[CHar]101+[CHar]119+[CHar]95+[CHar]108+[CHar]101+[CHar]110+[CHar]103+[CHar]116+[CHar]104+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]118+[CHar]48+[CHar]32+[CHar]61+[CHar]32+[CHar]105+[CHar]110+[CHar]116+[CHar]46+[CHar]102+[CHar]114+[CHar]111+[CHar]109+[CHar]95+[CHar]98+[CHar]121+[CHar]116+[CHar]101+[CHar]115+[CHar]40+[CHar]98+[CHar]97+[CHar]114+[CHar]114+[CHar]97+[CHar]121+[CHar]91+[CHar]105+[CHar]58+[CHar]105+[CHar]43+[CHar]52+[CHar]93+[CHar]44+[CHar]32+[CHar]39+[CHar]108+[CHar]105+[CHar]116+[CHar]116+[CHar]108+[CHar]101+[CHar]39+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]118+[CHar]49+[CHar]32+[CHar]61+[CHar]32+[CHar]105+[CHar]110+[CHar]116+[CHar]46+[CHar]102+[CHar]114+[CHar]111+[CHar]109+[CHar]95+[CHar]98+[CHar]121+[CHar]116+[CHar]101+[CHar]115+[CHar]40+[CHar]98+[CHar]97+[CHar]114+[CHar]114+[CHar]97+[CHar]121+[CHar]91+[CHar]105+[CHar]43+[CHar]52+[CHar]58+[CHar]105+[CHar]43+[CHar]56+[CHar]93+[CHar]44+[CHar]32+[CHar]39+[CHar]108+[CHar]105+[CHar]116+[CHar]116+[CHar]108+[CHar]101+[CHar]39+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]118+[CHar]46+[CHar]97+[CHar]112+[CHar]112+[CHar]101+[CHar]110+[CHar]100+[CHar]40+[CHar]118+[CHar]48+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]118+[CHar]46+[CHar]97+[CHar]112+[CHar]112+[CHar]101+[CHar]110+[CHar]100+[CHar]40+[CHar]118+[CHar]49+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]105+[CHar]32+[CHar]43+[CHar]61+[CHar]32+[CHar]56+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]114+[CHar]101+[CHar]116+[CHar]117+[CHar]114+[CHar]110+[CHar]32+[CHar]118+[CHar]10+[CHar]10+[CHar]100+[CHar]101+[CHar]102+[CHar]32+[CHar]99+[CHar]104+[CHar]101+[CHar]99+[CHar]107+[CHar]40+[CHar]105+[CHar]110+[CHar]115+[CHar]116+[CHar]114+[CHar]58+[CHar]115+[CHar]116+[CHar]114+[CHar]44+[CHar]99+[CHar]104+[CHar]101+[CHar]99+[CHar]107+[CHar]108+[CHar]105+[CHar]115+[CHar]116+[CHar]58+[CHar]108+[CHar]105+[CHar]115+[CHar]116+[CHar]41+[CHar]45+[CHar]62+[CHar]105+[CHar]110+[CHar]116+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]108+[CHar]101+[CHar]110+[CHar]103+[CHar]116+[CHar]104+[CHar]61+[CHar]108+[CHar]101+[CHar]110+[CHar]40+[CHar]105+[CHar]110+[CHar]115+[CHar]116+[CHar]114+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]105+[CHar]102+[CHar]32+[CHar]108+[CHar]101+[CHar]110+[CHar]103+[CHar]116+[CHar]104+[CHar]37+[CHar]56+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]112+[CHar]114+[CHar]105+[CHar]110+[CHar]116+[CHar]40+[CHar]34+[CHar]73+[CHar]110+[CHar]99+[CHar]111+[CHar]114+[CHar]114+[CHar]101+[CHar]99+[CHar]116+[CHar]32+[CHar]102+[CHar]111+[CHar]114+[CHar]109+[CHar]97+[CHar]116+[CHar]46+[CHar]34+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]101+[CHar]120+[CHar]105+[CHar]116+[CHar]40+[CHar]49+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]99+[CHar]61+[CHar]99+[CHar]104+[CHar]105+[CHar]112+[CHar]101+[CHar]114+[CHar]40+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]118+[CHar]32+[CHar]61+[CHar]32+[CHar]99+[CHar]46+[CHar]98+[CHar]121+[CHar]116+[CHar]101+[CHar]115+[CHar]50+[CHar]105+[CHar]110+[CHar]116+[CHar]115+[CHar]40+[CHar]105+[CHar]110+[CHar]115+[CHar]116+[CHar]114+[CHar]46+[CHar]101+[CHar]110+[CHar]99+[CHar]111+[CHar]100+[CHar]101+[CHar]40+[CHar]41+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]111+[CHar]117+[CHar]116+[CHar]112+[CHar]117+[CHar]116+[CHar]61+[CHar]108+[CHar]105+[CHar]115+[CHar]116+[CHar]40+[CHar]99+[CHar]46+[CHar]101+[CHar]40+[CHar]108+[CHar]101+[CHar]110+[CHar]40+[CHar]118+[CHar]41+[CHar]44+[CHar]118+[CHar]41+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]105+[CHar]61+[CHar]48+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]119+[CHar]104+[CHar]105+[CHar]108+[CHar]101+[CHar]40+[CHar]105+[CHar]60+[CHar]108+[CHar]101+[CHar]110+[CHar]40+[CHar]99+[CHar]104+[CHar]101+[CHar]99+[CHar]107+[CHar]108+[CHar]105+[CHar]115+[CHar]116+[CHar]41+[CHar]41+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]105+[CHar]102+[CHar]32+[CHar]105+[CHar]60+[CHar]108+[CHar]101+[CHar]110+[CHar]40+[CHar]111+[CHar]117+[CHar]116+[CHar]112+[CHar]117+[CHar]116+[CHar]41+[CHar]32+[CHar]97+[CHar]110+[CHar]100+[CHar]32+[CHar]111+[CHar]117+[CHar]116+[CHar]112+[CHar]117+[CHar]116+[CHar]91+[CHar]105+[CHar]93+[CHar]61+[CHar]61+[CHar]99+[CHar]104+[CHar]101+[CHar]99+[CHar]107+[CHar]108+[CHar]105+[CHar]115+[CHar]116+[CHar]91+[CHar]105+[CHar]93+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]105+[CHar]43+[CHar]61+[CHar]49+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]101+[CHar]108+[CHar]115+[CHar]101+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]98+[CHar]114+[CHar]101+[CHar]97+[CHar]107+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]105+[CHar]102+[CHar]32+[CHar]105+[CHar]61+[CHar]61+[CHar]108+[CHar]101+[CHar]110+[CHar]40+[CHar]99+[CHar]104+[CHar]101+[CHar]99+[CHar]107+[CHar]108+[CHar]105+[CHar]115+[CHar]116+[CHar]41+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]114+[CHar]101+[CHar]116+[CHar]117+[CHar]114+[CHar]110+[CHar]32+[CHar]49+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]114+[CHar]101+[CHar]116+[CHar]117+[CHar]114+[CHar]110+[CHar]32+[CHar]48+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]10+[CHar]10+[CHar]105+[CHar]102+[CHar]32+[CHar]95+[CHar]95+[CHar]110+[CHar]97+[CHar]109+[CHar]101+[CHar]95+[CHar]95+[CHar]61+[CHar]61+[CHar]34+[CHar]95+[CHar]95+[CHar]109+[CHar]97+[CHar]105+[CHar]110+[CHar]95+[CHar]95+[CHar]34+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]97+[CHar]110+[CHar]115+[CHar]61+[CHar]91+[CHar]49+[CHar]51+[CHar]55+[CHar]52+[CHar]50+[CHar]55+[CHar]56+[CHar]56+[CHar]52+[CHar]50+[CHar]44+[CHar]32+[CHar]50+[CHar]49+[CHar]51+[CHar]54+[CHar]48+[CHar]48+[CHar]54+[CHar]53+[CHar]52+[CHar]48+[CHar]44+[CHar]32+[CHar]52+[CHar]49+[CHar]57+[CHar]49+[CHar]48+[CHar]53+[CHar]54+[CHar]56+[CHar]49+[CHar]53+[CHar]44+[CHar]32+[CHar]51+[CHar]50+[CHar]52+[CHar]56+[CHar]56+[CHar]56+[CHar]49+[CHar]51+[CHar]55+[CHar]54+[CHar]93+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]35+[CHar]32+[CHar]103+[CHar]101+[CHar]110+[CHar]101+[CHar]114+[CHar]97+[CHar]116+[CHar]101+[CHar]82+[CHar]101+[CHar]115+[CHar]40+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]102+[CHar]108+[CHar]97+[CHar]103+[CHar]61+[CHar]105+[CHar]110+[CHar]112+[CHar]117+[CHar]116+[CHar]40+[CHar]39+[CHar]80+[CHar]108+[CHar]101+[CHar]97+[CHar]115+[CHar]101+[CHar]32+[CHar]105+[CHar]110+[CHar]112+[CHar]117+[CHar]116+[CHar]32+[CHar]102+[CHar]108+[CHar]97+[CHar]103+[CHar]58+[CHar]39+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]114+[CHar]101+[CHar]115+[CHar]61+[CHar]99+[CHar]104+[CHar]101+[CHar]99+[CHar]107+[CHar]40+[CHar]102+[CHar]108+[CHar]97+[CHar]103+[CHar]44+[CHar]97+[CHar]110+[CHar]115+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]105+[CHar]102+[CHar]32+[CHar]114+[CHar]101+[CHar]115+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]112+[CHar]114+[CHar]105+[CHar]110+[CHar]116+[CHar]40+[CHar]34+[CHar]67+[CHar]111+[CHar]110+[CHar]103+[CHar]114+[CHar]97+[CHar]116+[CHar]117+[CHar]108+[CHar]97+[CHar]116+[CHar]105+[CHar]111+[CHar]110+[CHar]115+[CHar]44+[CHar]32+[CHar]121+[CHar]111+[CHar]117+[CHar]39+[CHar]118+[CHar]101+[CHar]32+[CHar]103+[CHar]111+[CHar]116+[CHar]32+[CHar]116+[CHar]104+[CHar]101+[CHar]32+[CHar]102+[CHar]108+[CHar]97+[CHar]103+[CHar]33+[CHar]34+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]112+[CHar]114+[CHar]105+[CHar]110+[CHar]116+[CHar]40+[CHar]34+[CHar]70+[CHar]108+[CHar]97+[CHar]103+[CHar]32+[CHar]105+[CHar]115+[CHar]32+[CHar]42+[CHar]99+[CHar]116+[CHar]102+[CHar]123+[CHar]121+[CHar]111+[CHar]117+[CHar]114+[CHar]95+[CHar]105+[CHar]110+[CHar]112+[CHar]117+[CHar]116+[CHar]125+[CHar]33+[CHar]34+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]101+[CHar]120+[CHar]105+[CHar]116+[CHar]40+[CHar]48+[CHar]41+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]101+[CHar]108+[CHar]115+[CHar]101+[CHar]58+[CHar]10+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]32+[CHar]112+[CHar]114+[CHar]105+[CHar]110+[CHar]116+[CHar]40+[CHar]39+[CHar]78+[CHar]111+[CHar]112+[CHar]101+[CHar]44+[CHar]116+[CHar]114+[CHar]121+[CHar]32+[CHar]97+[CHar]103+[CHar]97+[CHar]105+[CHar]110+[CHar]33+[CHar]39+[CHar]41

简单解析一下

1
2
3
4
5
6
7
8
with open("./output", "r") as f:
out=f.read()

res=out.split("+")
print(len(res))
for i in res:
tmp=i[6:]
print(chr(int(tmp)),end="")

真正执行的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
class chiper():
def __init__(self):
self.d = 0x87654321
k0 = 0x67452301
k1 = 0xefcdab89
k2 = 0x98badcfe
k3 = 0x10325476
self.k = [k0, k1, k2, k3]

def e(self, n, v):
from ctypes import c_uint32

def MX(z, y, total, key, p, e):
temp1 = (z.value >> 6 ^ y.value << 4) + \
(y.value >> 2 ^ z.value << 5)
temp2 = (total.value ^ y.value) + \
(key[(p & 3) ^ e.value] ^ z.value)
return c_uint32(temp1 ^ temp2)
key = self.k
delta = self.d
rounds = 6 + 52//n
total = c_uint32(0)
z = c_uint32(v[n-1])
e = c_uint32(0)

while rounds > 0:
total.value += delta
e.value = (total.value >> 2) & 3
for p in range(n-1):
y = c_uint32(v[p+1])
v[p] = c_uint32(v[p] + MX(z, y, total, key, p, e).value).value
z.value = v[p]
y = c_uint32(v[0])
v[n-1] = c_uint32(v[n-1] + MX(z, y, total,
key, n-1, e).value).value
z.value = v[n-1]
rounds -= 1
return v

def bytes2ints(self,cs:bytes)->list:
new_length=len(cs)+(8-len(cs)%8)%8
barray=cs.ljust(new_length,b'\x00')
i=0
v=[]
while i < new_length:
v0 = int.from_bytes(barray[i:i+4], 'little')
v1 = int.from_bytes(barray[i+4:i+8], 'little')
v.append(v0)
v.append(v1)
i += 8
return v

def check(instr:str,checklist:list)->int:
length=len(instr)
if length%8:
print("Incorrect format.")
exit(1)
c=chiper()
v = c.bytes2ints(instr.encode())
output=list(c.e(len(v),v))
i=0
while(i<len(checklist)):
if i<len(output) and output[i]==checklist[i]:
i+=1
else:
break
if i==len(checklist):
return 1
return 0

if __name__=="__main__":
ans=[1374278842, 2136006540, 4191056815, 3248881376]
# generateRes()
flag=input('Please input flag:')
res=check(flag,ans)
if res:
print("Congratulations, you've got the flag!")
print("Flag is *ctf{your_input}!")
exit(0)
else:
print('Nope,try again!')

魔改的xxtea,改了delta和MX,简单修改一下就可以,解密脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>  
#include <stdint.h>
#define DELTA 0x87654321
#define MX (((z>>6^y<<4) + (y>>2^z<<5)) ^ ((sum^y) + (key[(p&3)^e] ^ z)))

void btea(uint32_t *v, int n, uint32_t const key[4])
{
uint32_t y, z, sum;
unsigned p, rounds, e;
if (n > 1) /* Coding Part */
{
rounds = 6 + 52/n;
sum = 0;
z = v[n-1];
do
{
sum += DELTA;
e = (sum >> 2) & 3;
for (p=0; p<n-1; p++)
{
y = v[p+1];
z = v[p] += MX;
}
y = v[0];
z = v[n-1] += MX;
}
while (--rounds);
}
else if (n < -1) /* Decoding Part */
{
n = -n;
rounds = 6 + 52/n;
sum = rounds*DELTA;
y = v[0];
do
{
e = (sum >> 2) & 3;
for (p=n-1; p>0; p--)
{
z = v[p-1];
y = v[p] -= MX;
}
z = v[n-1];
y = v[0] -= MX;
sum -= DELTA;
}
while (--rounds);
}
}


int main()
{
uint32_t v[4]= {1374278842, 2136006540, 4191056815, 3248881376};
uint32_t const k[4]= {0x67452301,0xefcdab89,0x98badcfe,0x10325476};
int n= 4;
btea(v, -n, k);
printf("%08x, %08x, %08x, %08x\n",v[0],v[1],v[2],v[3]);
return 0;
}

flagfile

挺有意思的一道题目,用magic file对flag进行检验,正确有输出。尝试写一些magic file编译之后和给出的flag.mgc进行对比,大致可以看出每一行实际执行的功能。总的来说除了格式上flag{*}的匹配以外,只有两种运算

1
2
3
>0x40 leshort^0xA =0xB
>(0x40.b) byte^0xA =0xB

第一种表示对0x40位置的偏移进行计算,由此可以得到0x40-0x7E位置上的值。第二种是相对偏移,取出0x40位置上的一个byte,这个byte的值就是文件偏移,然后对该偏移处的byte进行计算。

计算都是异或,非常好还原,解析给出的flag.mgc然后计算得到flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
s=[0 for _ in range(32)]

with open("./flag.mgc","rb") as f:
mgc=f.read()

p1=mgc[0x2F0:0x31F0]
idx=0
for i in range(0,len(p1),0x178):
tmp=p1[i:i+0x178]
# print(hex(tmp[0x18]),hex(tmp[0x20]))
s[idx]=tmp[0x18]^tmp[0x20]
idx+=1
print(s)

p2=mgc[0x31f0:0x60F0]
flag=[0 for _ in range(38)]
idx=0
for i in range(0,len(p2),0x178):
tmp=p2[i:i+0x178]
# print(hex(tmp[0x18]),hex(tmp[0x20]))
flag[s[idx]]=tmp[0x18]^tmp[0x20]
idx+=1
print(flag)
print("".join([chr(i) for i in flag]))

Pwn

Fcalc

浮点数计算器,要求输入的所有数据都是1.0-100.0之间的浮点数,可以使用+-*/四种运算,但是在判断时对调用函数的索引没有进行严格限制,导致可以通过输入0执行shellcode。此外,还有一个buf overflow,可以覆盖已经读入内存的浮点数值。

最大的难点在于shellcode必须满足1.0-100.0之间的浮点数这一要求,构造起来难度很大,所以使了个讨巧的办法,对一个浮点数,替换头两位为jmp $-x,跳转到不需要检查的输入执行,这种替换不太会影响浮点数的值,只会在小数点后几位产生影响。

payload如下

1
2
sl("1.1 1.2")
s(b"0" + b" " * 0x1F + execve_bin_sh.ljust(0x20, b"\x90") + p64(0x3FF199999999CEEB) * 3)
nepctf-2023 hws-2023

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×