這道題的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: