题目
writeup
首先尝试输入例子:loli.club
发现,get方式传入url
尝试127.0.0.1
发现执行了ping 127.0.0.1的命令
考虑curl
但是,尝试ls、cat等命令,无法正常执行
转换思路(还是参考了大佬们的文章~
尝试输入url编码后的字符且是不常见的那种!
输入%8f,报错
查看报错信息:
发现:Django
debug
于是,尝试查找api有用信息:
发现api后有database
于是尝试访问该路径
但无法成功
参考资料发现:
于是有:
?url=@/opt/api/database.sqlite3
查找CTF:
得到flag~
知识点:
curl-@
CURLOPT_POSTFIELDS
全部数据使用HTTP协议中的 “POST” 操作来发送。
要发送文件,在文件名前面加上*@前缀并使用完整路径。
文件类型可在文件名后以 ';type=mimetype*’ 的格式指定。
这个参数可以是 urlencoded 后的字符串,类似’para1=val1¶2=val2&…’,也可以使用一个以字段名为键值,字段数据为值的数组。
如果value
是一个数组,Content-Type头将会被设置成multipart/form-data。从 PHP 5.2.0 开始,使用 @ 前缀传递文件时,
value
必须是个数组。从 PHP 5.5.0 开始, @ 前缀已被废弃,文件可通过 CURLFile 发送。
设置 CURLOPT_SAFE_UPLOAD 为 TRUE 可禁用 @ 前缀发送文件,以增加安全性。