旅游网站怎么用dw做,东营建设局官网,吴江seo网站优化软件,优秀企业门户网站建设首先#xff0c;查个壳#xff0c;64bit#xff0c;那就丢进ida64中进行反编译进来之后#xff0c;我们进入main函数#xff0c;发现里面没什么东西#xff0c;那就shiftf12搜索字符串#xff0c;找到关键字符串#xff0c;双击进入然后再选中该字符串#xff0c;ctrl…首先查个壳64bit那就丢进ida64中进行反编译进来之后我们进入main函数发现里面没什么东西那就shiftf12搜索字符串找到关键字符串双击进入然后再选中该字符串ctrlx进入应用该字符串的函数如下图然后边分析边在旁边打上注释在阐述里面的逻辑之前我们先了解一个小知识点我们都知道两个十六进制数由1个字节构成也就是8个01代码通常类型为8位的就是正向读取而一般64位的或者更大的都要进行逆向读取此处的src和v9[0]就大于64位要进行逆向读取这段代码的主逻辑大概就是先进行一些字符串的复制和连接然后将key中的大写字母转换为小写字母然后getchar读取字符该字符的范围在a~z和A~Z之间再根据输入的字符对某段字符串进行处理最后比对一下相同则正确 str2[v2] (v1 - 39 - key[v3 % v5] 97) % 26 97; 此处的str2为下方的text已知key也为已知采取爆破遍历算法得到v1即为flag上代码 #includeiostream
#includestdio.h
using namespace std;
int main()
{char key[] adsfkndcls;char text[] killshadow;for (int i 0; i 10; i) //10代表的是key的长度{for (int j 65; j 122; j){//依次遍历爆破把控好j的取值if (j A j Z || j a j z){if (text[i] (j - 39 - key[i ] 97) % 26 97){printf(%c, j);break;}}}}return 0;
}得到结果flag{KLDQCUDFZO}提交即可