这道题的flag让人觉得很意外,或者说把问题复杂化了。下面是本题的题解:
拿到的是一个32位的pe文件,直接放进IDA,定位主函数:
int main_0()
{
int v0; // eax
signed int v2; // [esp+50h] [ebp-18h]
_DWORD *v3; // [esp+54h] [ebp-14h]
signed int i; // [esp+58h] [ebp-10h]
v3 = operator new(0x1Cu);
v2 = strlen("2410488");
for ( i = 0; i < v2; ++i )
v3[i] = ((2 * a2410488[i] - 96) / 4 + 3) % 10;
sub_401285((int)&unk_47BE90, "flag:");
sub_401041(v3);
v0 = sub_4011E0(&sub_4010CD);
sub_401285(v0, "怎么一直在变???");
sub_4011E0(&sub_4010CD);
Sleep(0x7D0u);
return 0;
}
主函数比较简洁,但有一堆不知道干嘛的函数,先不用管他,其中对flag做变换的即使开始的for循环:
v3 = operator new(0x1Cu);
v2 = strlen("2410488");
for ( i = 0; i < v2; ++i )
v3[i] = ((2 * a2410488[i] - 96) / 4 + 3) % 10;
跟踪到下面可以大致分析得出v3即是flag的值,所以剩下的工作就是解出v3的值,脚本如下:
key = "2410488"
flag = []
for i in key:
flag.append(str(int(((2*ord(i)-96)/4+3) % 10)))
flag = ''.join(flag)
print(flag)
运行即得到flag,这里的flag值是一段数字,并不是字符串所以结果出来会感觉怪怪的。
web1 一道水题
打开链接发现是一堆图片,也没有其他什么东西:
打开控制台一看,即发现flag:
web 2 还是一道水题
打开题目链接发现让输入moctf,但输入框并不允许输入:
还是打开控制台,发现输入被禁止:
这里只需要将input标签的这一属性删除就好了,此外还可以给value直接赋值,不用再在输入框输入:
之后提交即得到flag:
disabled属性:
web3 机器蛇
进入页面是一个网页游戏,完了一下没发现什么特别之处:
照常打开控制台:
发现robots.txt,添加至地址栏:
得到flag的地址:
访问:
得到flag: