CTF之wtf.sh-150

拿到题目发现是一个论坛网站

我们随便注册一个账号进去看看,点开一篇文章,发现url是以post为参数的get请求方式

接下来就要学习一个新知识点了,叫做文件穿越。将post的参数改为: ../

往下滑发现好的users和cookies

 看了大佬的wp介绍,说users是一个储存账号和对应token的目录,并且可以用cookies进行登录

文件穿越查看../users,得到了admin的token:uYpiNNf/X0/0xNfqmsuoKFEtRlQDwNbS2T6LdHDRWH5p3x4bL4sxN0RMg17KJhAmTMyr8Sem++fldP0scW7g3w==

登录一个账号,刷新一下抓包,将username改成admin,token改成admin对应的

 然后就可以发现登录到了admin

 点击profile刷新一下抓包,然后发给重发器

 在重发器里可以发现这里发送的包username和token还是自己注册的123的

 这一次我们要把cookies后面username前面的都删除,然后再改成admin和对应的token,便可以得到第一段Flag: xctf{cb49256d1ab48803

 然后看一下大佬找到的源码(反正我没有找到,谁找到了告诉我一下在哪里)

function reply {
    local post_id=$1;
    local username=$2;
    local text=$3;
    local hashed=$(hash_username "${username}");

    curr_id=$(for d in posts/${post_id}/*; do basename $d; done | sort -n | tail -n 1);
    next_reply_id=$(awk '{print $1+1}' <<< "${curr_id}");
    next_file=(posts/${post_id}/${next_reply_id});
    echo "${username}" > "${next_file}";
    echo "RE: $(nth_line 2 < "posts/${post_id}/1")" >> "${next_file}";
    echo "${text}" >> "${next_file}";

     #add post this is in reply to to posts cache
    echo "${post_id}/${next_reply_id}" >> "users_lookup/${hashed}/posts";
}

这是评论功能的后台代码,这部分也是存在路径穿越的。

这行代码把用户名写在了评论文件的内容中

通过上面的分析:如果用户名是一段可执行代码,而且写入的文件是 wtf 格式的,那么这个文件就能够执行我们想要的代码。 (而且wtf.sh只运行文件扩展名为.wtf的脚本和前缀为’$'的行)

如果我注册的用户名就是一段可执行的代码,而且写入的文件也是wtf格式的,那么这个文件就能执行我们想要的代码

本册使用的注册名必须要是:${find,/,-iname,get_flag2},使用这个名字的目的是为了找打get_flag2的文件路径

然后登录${find,/,-iname,get_flag2},点击new post,随便评论一个,再点击reply进入修改

随便提交一个抓包,将post的参数改成../sh.wtf%09

知晓评论发送的数据包的结构,在普通评论的基础上,进行路径穿越,上传后门sh.wtf,wtf后面要加%09,表示制表符,否在会被当做目录去解析

 

 再访问/sh.wtf,可以看到get_flag2的路径

 然后再注册一个账号$/usr/bin/get_flag2,同样登录评论一下修改抓包,上传一个搜索ss.wtf文件

../ss.wtf%09

 访问/ss.wtf得到后半段Flag: 149e5ec49d3c29ca}

最后的flag为:Flag: xctf{cb49256d1ab48803149e5ec49d3c29ca}

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值