日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BUUOJ reverse SimpleRev (爆破)

發布時間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BUUOJ reverse SimpleRev (爆破) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SimpleRev

SimpleRev(flag需加上flag{}再提交) 注意:得到的 flag 請包上 flag{} 提交

拖到ida 找到關鍵函數:

unsigned __int64 Decry() {char v1; // [rsp+Fh] [rbp-51h]int v2; // [rsp+10h] [rbp-50h]int v3; // [rsp+14h] [rbp-4Ch]int i; // [rsp+18h] [rbp-48h]int v5; // [rsp+1Ch] [rbp-44h]__int64 v6; // [rsp+20h] [rbp-40h]__int64 v7; // [rsp+28h] [rbp-38h]int v8; // [rsp+30h] [rbp-30h]__int64 v9; // [rsp+40h] [rbp-20h]__int64 v10; // [rsp+48h] [rbp-18h]int v11; // [rsp+50h] [rbp-10h]unsigned __int64 v12; // [rsp+58h] [rbp-8h] v12 = __readfsqword(0x28u);v6 = 'SLCDN';v7 = 0LL;v8 = 0;v9 = 'wodah';v10 = 0LL;v11 = 0;text = join(key3, (const char *)&v9); strcpy(key, key1);strcat(key, (const char *)&v6); v2 = 0;v3 = 0;getchar();v5 = strlen(key);for ( i = 0; i < v5; ++i ){if ( key[v3 % v5] > 64 && key[v3 % v5] <= 90 )key[i] = key[v3 % v5] + 32;++v3;}printf("Please input your flag:", &v6);while ( 1 ){v1 = getchar();if ( v1 == 10 )break;if ( v1 == 32 ){++v2;}else{if ( v1 <= 96 || v1 > 122 ){if ( v1 > 64 && v1 <= 90 )str2[v2] = (v1 - 39 - key[v3++ % v5] + 97) % 26 + 97;}else{str2[v2] = (v1 - 39 - key[v3++ % v5] + 97) % 26 + 97;}if ( !(v3 % v5) )putchar(32);++v2;}}if ( !strcmp(text, str2) )puts("Congratulation!\n");elseputs("Try again!\n");return __readfsqword(0x28u) ^ v12; }

可以看到一開始是兩個拼接函數,構造key和text兩個字符串,這里需要注意的是,因為是小端序存儲的一長串數,所以按字符操作的時候需要將順序反過來,所以這里key是“ADSFKNDCLS”,text是"killshadow"。

然后就是寫腳本了,這里主要是學了下怎么寫爆破:

key="ADSFKNDCLS" text="killshadow" s="" flag="" loop="ABCDEFGHIJKLMNOPQRSTUVWXYZ"v2 = 0 v3 = 0 v5 = len(key) for i in range(0,v5):if ( ord(key[i]) > 64 and ord(key[i]) <= 90 ):s += chr(ord(key[i]) + 32)else:s +=key[i] print(s)for i in range(0,len(text)):for j in loop:if ord(text[i])==(ord(j)-39-ord(s[i])+97)%26+97:flag+=jprint(flag)

?

轉載于:https://www.cnblogs.com/dyhaohaoxuexi/p/11427366.html

總結

以上是生活随笔為你收集整理的BUUOJ reverse SimpleRev (爆破)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。