不写BUU了,对我这种菜鸡太不友好了,一点都没难度梯度,太痛苦了~
现在写攻防世界了!
题目连接:
https://adworld.xctf.org.cn/challenges/list?rwNmOdr=1698407298121
这道题查壳——无壳——64位
IDA安排
直接就锁定到了Enter the password
查看调用
(这个fun1是我改了名字的,不影响,你们对照就行)
发现就是输入,然后s接受到,然后经过fun1函数嘛
进入fun1函数看看
一眼丁真
很明显,中间那个循环就是关键,逻辑蛮简单的
a1就是原函数的s
然后就是看 在每个i中 V3[i%3]这个字符串里面的第2(i/3)个元素 来减去输入的11个字符串中的第i个元素 是否等于1
脚本如下
#include "bits/stdc++.h"
using namespace std;
int main(){
string flag;
string v3[3];
v3[0]="Dufhbmf";
v3[1]="pG`imos";
v3[2]="ewUglpt";
for (int i = 0; i <= 11; ++i) {
for (int j = 30; j < 128; ++j) {
if (int(v3[i%3][2*(i/3)]-j)==1)
flag+=(char)j;
}
}
cout<<flag;
return 0;
}
收工!