MISC
sandgame
game.py
|
|
solution.py
|
|
韩信点兵问题,根据中国剩余定理构造通解
Cycle
cycle.py
|
|
cipher.txt
|
|
类似维吉尼亚的变种,key长度远小于plain,循环异或后可统计字频,南邮CTF平台有一题相似的。详见 https://findneo.github.io/171005NuptVigenereWP/ 。稍微更改其中读取密文部分即可。flag{Something Just Like This}
|
|
WEB
Anonymous
https://www.jianshu.com/p/19e3ee990cb7
|
|
$flag="SUCTF{L4GsMqu6gu5knFnCi2Te8SjSucxKfQj6tuPJokoFhTCJjpa6RSfK}";
Getshell
要求上传的webshell文件从第6个字符开始都不能在黑名单内。
用burp intruder跑一遍,发现不在黑名单里的可打印字符有 $()[]_~=;.
共10个。
跑的时候需注意Intruder=>payloads=>payload encoding
处需取消勾选,否则会因为字符编码而不能得到正确的白名单。
跑的时候可以在Intruder=>options=>Grep-Match
中选择 flag illegal
,这样就可以快速看到那些字符是合法的了。
接下来就是构造一个由 $()[]_~=;.
组成的webshell了,主要思路来自 一些不包含数字和字母的webshell 。
构造出的最终结果如下:
|
|
详细注释:
|
|
可以有一个更短更舒服的选择
|
|
详细注释:
|
|
读取flag
|
|
上传小脚本
|
|
写了一个用上述方法生成任意字母构成的字符串的小程序:
|
|
CRYPTO
Magic
把magic视为256x256的由0,1组成的矩阵M,把cipher视为256x1的矩阵C,把key视为256x1的矩阵K,已知M,C,且M*K = C (.mod 2),求K。
可以采用Gauss-Jordan 消元法
将增广矩阵[M|C]
简化为行阶梯形矩阵,那么变化后的C就是我们的解K。
|
|
参考链接:
- https://blog.csdn.net/u010182633/article/details/45225179
- https://github.com/0h2o/docs/tree/gh-pages/WriteUps/SUCTF2018/CNSS_SUCTF_WRITEUP
- 也可尝试借助matlab的 rref 。
题目备份
https://github.com/findneo/ctfgodown/tree/master/20180527-suctf