[GDOUCTF 2023]EZ WEB
题目网站在NSSCTF
这个题目有一个新的知识点,对于我来说比较的少见吧,第一次遇见。em...是什么呢?后面再说
进入靶场,比较突兀,点了这个button后,提示flag在附近
查看源码,有提示/src目录下载源码,进行代码审计
import flaskapp = flask.Flask(__name__)@app.route('/', methods=['GET'])
def index():return flask.send_file('index.html')@app.route('/src', methods=['GET'])
def source():return flask.send_file('app.py')@app.route('/super-secret-route-nobody-will-guess', methods=['PUT'])
def flag():return open('flag').read()
这里只需要看最后几段代码,特别少见的PUT请求。
使用PUT请求,访问目录/super-secret-route-nobody-will-guess
获取flag
[GDOUCTF 2023]泄露的伪装
核心知识点:
- 目录扫描得到目录/orzorz.php
- 看见源码后,使用伪协议
进入/orzorz.php目录,审计源码
这里使用data伪协议,获取flag
payload:orzorz.php?cxk=data://text/plain,ctrl
[HNCTF 2022 Week1]2048
核心:
- 查看源码,寻找js内容,然后在hackbar中的控制台运行js代码
进入靶场
从源代码中寻找flag,虽然没有找到,但是看见了2028.js文件,发现类似flag的js放控制台运行
这里成功获取flag,这里注意需要使用NSSCTF{},flag{}提交不正确
[GDOUCTF 2023]hate eat snake
核心:
- 控制台运行js代码
- js小游戏漏洞
方法一:js游戏漏洞
撞墙之后点取消,等待60秒,然后点空格直接报出flag
方法二:控制台运行js,跳过if函数
标红代码不用复制,控制台先运行非标红此函数,
然后运行alert(_0x324fcb(0x2d9,0x2c3,0x2db,0x2f3)+'k3r_h0pe_t'+_0xe4a674(0x5a1,0x595,0x59e,0x57c)+'irlfriend}'),![];再一次enter获取flag
[UUCTF 2022 新生赛]ez_rce
核心:
- rce绕过
- 反引号使用
- 正则匹配绕过
代码审计
1.使用反引号``,反引号作用是执行反应号中的代码
2.反应号和eval()函数均不会回显,这里使用print()函数
3.利用反斜线绕过正则,例如:l/s
payload:?code=printf(`l\s /`);
payload:?code=printf(`ta\c /fffffffffflagafag`);
获取flag
[CISCN 2019华东南]Web11
核心:
- XFF注入
- Smarty简单命令执行
这里直接用burp抓包,然后进行XFF注入判断Smarty模板注入
回显:Current IP:16。说明存在Smarty注入
这里构建payload:X-Forwarded-For: {system(‘ls /’)}
payload:X-Forwarded-For:{system('cat /flag')}
[NISACTF 2022]checkin
核心:
- Unicode编码强制符
源码平常无奇
这里请放在vscode中进行查看
不要问为什么,因为我也没有搞明白
payload:?ahahahaha=jitanglailo&%E2%80%AE%E2%81%A6Ugeiwo%E2%81%A9%E2%81%A6cuishiyuan=%E2%80%AE%E2%81%A6+Flag!%E2%81%A9%E2%81%A6N1SACTF
相关Unicode的强制符
[GKCTF 2020]cve版签到
核心:
- 简单ssrf---cve
这里没有信息使用burp抓包,这里注意响应头
payload:?url=http://127.0.0.123%00www.ctfhub.com
PHP 7.2.29之前的7.2.x版本、 7.3.16之前的7.3.x版本、 7.4.4之前的7.4.x版本中的‘get_headers()’函数存在安全漏洞。可以⽤来绕WAF,SSRF利⽤。
cve-2020-7066
知识点
00截断
get_headers() 返回⼀个数组,包含有服务器响应⼀个 HTTP 请求所发送的标头。
00截断包括%00截断和0x00截断
0x00是⼗六进制表示⽅法,是在ascii码中为0的字符,有些函数会将0x00当做结束符,从⽽进⾏⽂件上传的绕过在url⾥⾯,get传⼊的%00会经过⼀次解码,解码为0x00,发挥截断作⽤。