afr-1
打开题目链接
默认的传参数据为 ?p=hello
更改一下试试看 ?p=111 无回显
?p=flag 回显了 no no no
想到了 php任意文件读取
?p=php://filter/read=convert.base64-encode/resource=flag
回显出数据
应该是base64 拿去解码
得到flag
afr-2
打开题目链接
查看源代码
nginx配置问题导致存在目录穿越 访问它的前一个目录 img../
/img../flag
得到flag
afr-3
打开题目链接 (看似为XSS ?)
传入个数据看看 打破最初的猜想
点击article
name参数是个点 利用这个name参数获取当前执行系统命令 读取系统文件
补充(Linux系统上的/proc目录是一种文件系统 即proc文件系统 与其它常见的文件系统不同的是 /proc是一种伪文件系统(也即虚拟文件系统) 存储的是当前内核运行状态的一系列特殊文件 用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息 甚至可以通过更改其中某些文件来改变内核的运行状态
/proc/[pid] 当查看当前进程的时候可以用/proc/self代替
cmdline — 启动当前进程的完整命令 但僵尸进程目录中的此文件不包含任何信息
cwd — 指向当前进程运行目录的一个符号链接
environ — 当前进程的环境变量列表 彼此间用空字符(NULL)隔开 变量用大写字母表示 其值用小写字母表示)
任意文件读取漏洞 读取到结果 看到当前目录存在的两个文件 flag.py和key.py
白盒测试
#!/usr/bin/pythonimport osfrom flask import ( Flask, render_template, request, url_for, redirect, session, render_template_string )from flask_session import Session app = Flask(__name__)execfile('flag.py')execfile('key.py') FLAG = flagapp.secret_key = key@app.route("/n1page", methods=["GET", "POST"])def n1page(): if request.method != "POST": return redirect(url_for("index")) n1code = request.form.get("n1code") or None if n1code is not None: n1code = n1code.replace(".", "").replace("_", "").replace("{","").replace("}","") if "n1code" not in session or session['n1code'] is None: session['n1code'] = n1code template = None if session['n1code'] is not None: template = ''' Hello : %s, why you don't look at our article?