前言

继续ctf的旅程
开始攻防世界web高手进阶区的7分题
本文是wtf.sh-150的writeup

解题过程

进来是个论坛

有注册登录发布的文章
尝试点击下各个连接
查看源码和扫描后台
都没有发现

那就注册试试
并尝试在注册登录发布里sql注入
无果

不断尝试
在展示文章的页面 post.wtf 下发现路径穿越漏洞

  • 如果应用程序使用用户可控制的数据,以危险的方式访问位于应用服务器或其它后端文件系统的文件或目录,就会出现路径遍历
  • 攻击者可以将路径遍历序列放入文件名内,向上回溯,从而访问服务器上的任何文件


出现源码
(看的眼睛生疼。。。)
那第一反应搜索flag关键词

幸运的发现了
整理下如下

<html>
<head><link rel="stylesheet" type="text/css" href="/css/std.css" >
</head>
$ if contains 'user' ${!URL_PARAMS[@]} && file_exists "users/${URL_PARAMS['user']}"
$ then
$   local username=$(head -n 1 users/${URL_PARAMS['user']});
$   echo "<h3>${username}'s posts:</h3>";
$   echo "<ol>";
$   get_users_posts "${username}" | while read -r post; do
$       post_slug=$(awk -F/ '{print $2 "#" $3}' <<< "${post}");
$       echo "<li><a href=\"/post.wtf?post=${post_slug}\">$(nth_line 2 "${post}" | htmlentities)</a></li>";
$   done
$   echo "</ol>";
$   if is_logged_in && [[ "${COOKIES['USERNAME']}" = 'admin' ]] && [[ ${username} = 'admin' ]]
$   then
$       get_flag1
$   fi
$ fi
</html>

可以发现admin登录就能获取flag
搜索admin和user
发现有user文件夹

那就继续

可以发现admin账号和我们注册的123账号
然后下面这一串跟自己注册账号抓包对比
发现是cookie里的token
个么尝试欺骗

得到flag。。。的一半Flag: xctf{cb49256d1ab48803
啊,果然没那么简单

回去继续代码审计
(看得眼睛生疼。。。)
突然想到这个网页是wtf文件
这个是真没接触过
印象里似乎是魔兽世界看到过?
跑远了。。。

反正盲猜下跟这个有关
找wtf关键词
找到一段

整理下

max_page_include_depth=64
page_include_depth=0
function include_page {# include_page pathnamelocal pathname=$1local cmd=[[ ${pathname(-4)} = '.wtf' ]];local can_execute=$;page_include_depth=$(($page_include_depth+1))if [[ $page_include_depth -lt $max_page_include_depth ]]thenlocal line;while read -r line; do# check if we're in a script line or not ($ at the beginning implies script line)# also, our extension needs to be .wtf[[ $ = ${line01} && ${can_execute} = 0 ]];is_script=$;# execute the line.if [[ $is_script = 0 ]]thencmd+=$'n'${line#$};elseif [[ -n $cmd ]]theneval $cmd  log Error during execution of ${cmd};cmd=fiecho $linefidone  ${pathname}elseecho pMax include depth exceeded!pfi
}

发现服务器能够解析并执行 wtf 文件
如果还能够上传 wtf 文件并执行的话,就可以达到控制服务器的目的
。。。。。。
还得寻找上传办法
。。。
哽住了
不会做了
感觉应该是寻找注入或上传后门的代码
查了查wp

寻找到一个reply功能的代码如下

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 cacheecho "${post_id}/${next_reply_id}" >> "users_lookup/${hashed}/posts";
}

存在路径穿越
把用户名写在了评论文件的内容中
如果用户名是一段可执行代码,而且写入的文件是 wtf 格式的
那么这个文件就能够执行我们想要的代码

那就创建个用户
在用户名里写入后门

${find,/,-name,get_flag2}

然后评论并抓包

上传个sh.wtf
即修改下post内容

这里注意:
%09是水平制表符,必须添加,不然后台会把后门当做目录去解析
(学到了!)

然后访问sh.wtf
获得了flag2的路径

那就创建用户名$/usr/bin/get_flag2
重复上述步骤
获得flag2

最终flag:xctf{cb49256d1ab48803149e5ec49d3c29ca}

结语

前一半flag还行,路径穿越说实话蛮快就试出来了
后一半就难顶了,代码审计眼疼,wtf也不了解,后门上传还是查wp的

知识点

  • 路径穿越
  • cookie欺骗
  • 代码审计
  • wtf文件
  • 上传后门

几个wp

  • 一个国外大神的wp
  • 神仙系列
  • 神仙题

继续努力

攻防世界 web高手进阶区 7分题 wtf.sh-150相关推荐

  1. 攻防世界 web高手进阶区 9分题 favorite_number

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是favorite_number的writeup 解题过程 进入界面 简单的代码审计 首先是个判断,既要数组强等于,又要首元素不等 然 ...

  2. 攻防世界 web高手进阶区 10分题 weiphp

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的10分题 本文是weiphp的writeup 解题过程 进入界面 点击 进入一个登陆界面 没有注册 那肯定得找源码了 惯例源码+御剑 发现git泄 ...

  3. 攻防世界 web高手进阶区 8分题 Web_python_block_chain

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的8分题 本文是Web_python_block_chain的writeup 解题过程 这是个区块链题 这..裂开了啊 没搞过区块链 从零开始学习 ...

  4. 攻防世界 web高手进阶区 9分题 bilibili

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是bilibili的writeup 解题过程 进来界面 这尼玛出题人是黑还是粉啊 笑死 看题目意思是买lv6 惯例源码+御剑 没发现什 ...

  5. 攻防世界 web高手进阶区 7分题Confusion1

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的7分题 本文是Confusion1的writeup 解题过程 进来的界面如下 (后来知道是php vs python的意思,也就是给提示跟pyth ...

  6. 攻防世界 Reverse高手进阶区 2分题 reverse-for-the-holy-grail-350

    前言 继续ctf的旅程 攻防世界Reverse高手进阶区的2分题 本篇是reverse-for-the-holy-grail-350的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数 ...

  7. 攻防世界 Crypto高手进阶区 3分题 wtc_rsa_bbq

    前言 继续ctf的旅程 攻防世界Crypto高手进阶区的3分题 本篇是wtc_rsa_bbq的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 得到一个无后缀文件 扔 ...

  8. 攻防世界 Crypto高手进阶区 3分题 你猜猜

    前言 继续ctf的旅程 攻防世界Crypto高手进阶区的3分题 本篇是你猜猜的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 得到一串16进制 504B03040A ...

  9. 攻防世界 Misc高手进阶区 7分题 Russian-zips

    前言 继续ctf的旅程 攻防世界Misc高手进阶区的7分题 本篇是Russian-zips的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 得到一个压缩文件 解压要 ...

  10. 攻防世界 Misc高手进阶区 7分题 流量分析

    前言 继续ctf的旅程 攻防世界Misc高手进阶区的7分题 本篇是流量分析的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 题目描述 得到一个流量包 根据题目描述 ...

最新文章

  1. 编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)
  2. linux显示不在sudoers文件中,Ubuntu无法使用sudo提权提示当前用户不在sudoers文件中...
  3. Ubuntu系统安装stardict(星际译王)词典
  4. [转载] 英语科技论文写作——Difference between APAMLA
  5. linxu命令之cp 拷贝整个目录下的所有文件
  6. NullPointerException int java.util.List.size()
  7. 【TensorFlow】TensorFlow从浅入深系列之四 -- 教你深入理解过拟合问题(正则化)
  8. ES6的Promise -- 逻辑执行的顺序
  9. mysql测试数据100w_利用MySQL存储过程批量插入100W条测试数据
  10. 在3dmax中打开文件时,显示路径无效,如何处理?
  11. Qt QDataVisualization 三维图 坐标轴 显示比例
  12. 云计算认证哪个好?考什么内容?
  13. html语言单个单元格背景颜色,html如何设置表格和单元格的背景颜色
  14. 哈哈哈 一个小玩意 感觉就是一个引子 可以拿来玩
  15. 华大HC32F460系列填坑之USART
  16. 如何卸载avast free antivirus软件?
  17. jmeter入门——第一个jmeter脚本
  18. RS导出Excel交叉表角对应的列占用多列问题
  19. 驰为v10刷linux,V10HD强势回归 3G双系统聚划算首发
  20. 小学数学考试系统java_C语言项目小学生数学考试系统参考

热门文章

  1. Dynamics 365Online 模板(Template)可以下载了
  2. CS中mdl文件的解析
  3. matlab2010b显示激活界面_【转】Matlab2010b许可证过期问题,反复提示激活
  4. linux 解压bz2文件
  5. IDEA设置护眼浅绿色背景
  6. c语言实现作业调度先来先服务和短进程优先,先来先服务和高响应比优先调度算法C语言实现...
  7. 51单片机2个按钮逻辑设计http://www.51hei.com/bbs/forum.php?mod=viewthreadtid=165521page=1#pid720113
  8. 甘特图怎么做项目进度计划
  9. EPLAN 2.7 WIN 10 X64安装说明
  10. mysql的应用_mysql应用场景