Re
1、seayre
首先将程序拖动到die中查壳
发现无壳,并且是64位,拖动到64位的ida中进行反编译
f5反编译之后直接得到flag,没啥技术含量
或者可以解读一下程序,程序的结构是输入两个数,若两个数相同则输出flag,运行输出即可
2、reverse1
查壳,拖入die
无壳,64位,拖入到ida中f5反编译,然后找到main函数
开始分首先sub_1400111D1函数肯定是printf函数
strncmp(str1,str2,v3)是把str1与str2两字符串的前v3位数做一个比较,若str1=str2,返回0;大于返回正数,小于返回负数
if(!strncmp(str1,str2,v3))是一个判断语句,if()括号里面的内容如果为真,则输出"this is the right flag"
因为含有!的符号,所以如果str1=str2的时候,strncmp(str1,str2,v3)的值为0,则!strncmp(str1,str2,v3)的函数值就是1,即为输出"this is the right flag"
再看输入语句,输入的是str1,但是str2没有,可能是函数内部含有的
双击str2,查看一下
得到了一串字符串{hello_world},但是这并不是最终答案继续往上分析函数
有一个if语句,我们可以看到str2中ascll码为111的变成了48,我们可以选中数字按R键变成字符,方便查看
所以我们把‘o’变回‘0’得到原来的flag
3、reverse2
拖入die查壳
无壳,64位,拖入64位ida中,f5反编译
直接看for循环,发现对flag进行了替换,吧ascll码105和114换成了49
双击查看&flag的地址得到一串字符“hacking_for_fun”
再根据替换的规则,‘i’和‘r’换成‘1’
hack1ng_fo1_fun
4、内涵的软件1
die查壳
无壳,32位,拖32位ida,f5反编译找到main函数
DBAPP{49d3c93df25caad81232130f3d2ebfad}
吧DBAPP换成flag试试,结果还真成功了........这题啥情况
5、新年快乐
拖入die查壳
拖到kali中脱壳
脱壳后再拖入32位ida中反编译
找到字符串HappyNewYear!加上flag{}即可
6、xor
一看到xor就知道到这题跟异或脱不了关系,die查壳
无壳,64位
分析程序,这个程序的工作流程是先输入flag,然后然后让flag与他的上一位进行异或计算
再然后与global进行对比,如果相同则正确
所以正确的数据存储在global中,所以找到 __data:_global存储的数据
key=['f',0xA,'k',0xC,'w','&','O','.','@',0x11,'x',0xD,'Z',';','U',0x11,'p',0x19,'F',0x1F,'v','"','M','#','D',0xE,'g',6,'h',0xF,'G','2','O' ]
为了方便写脚本再将它换成十六进制的形式
key= [0x00, 0x66, 0x0A, 0x6b, 0x0c, 0x77, 0x26, 0x4f, 0x2e, 0x40,
0x11, 0x78, 0x0d, 0x5a, 0x3b, 0x55, 0x11, 0x70, 0x19, 0x46,
0x1f, 0x76, 0x22, 0x4d, 0x23, 0x44, 0x0e, 0x67, 0x06, 0x68,
0x0f, 0x47, 0x32, 0x4f]
然后写一个与前一位异或的脚本,脚本如下:
key = [0x00, 0x66, 0x0A, 0x6b, 0x0c, 0x77, 0x26, 0x4f, 0x2e, 0x40,
0x11, 0x78, 0x0d, 0x5a, 0x3b, 0x55, 0x11, 0x70, 0x19, 0x46,
0x1f, 0x76, 0x22, 0x4d, 0x23, 0x44, 0x0e, 0x67, 0x06, 0x68,
0x0f, 0x47, 0x32, 0x4f]
flag = ""
for i in range(1, len(key)):
flag += chr(key[i] ^ key[i-1])
print(flag)
7、helloword
一看是apk文件,则使用jadx打开
在源代码找到main函数,然后找到flag
8、reverse2
拖到die中查壳
无壳,32位,拖入ida反编译一下,找到main函数
shift+f12查看一下字符串,发现有base64的码表,所以可以初步判断是经过base64加密的
再看加密算法
关键语句 Destination[j] += j;
可以看出来每一位的ascll码都加了一个j(位数),写脚本反过来就好,前提是先找到字符串
是拿destination和str2进行比较,所以查看一下str2的字符串,得到了'e3nifIH9b_C@n@dH'
先写脚本减去位数
脚本:
s = "e3nifIH9b_C@n@dH"
x = ""
for i in range(0,len(s)):
x += chr(ord(s[i]) - i)
print(x)
得到结果字符串‘e2lfbDB2ZV95b3V9’这里是正常的码表,送去base64解密一下
得到flag
misc
1、wireshark
先用wireshark打开流量包
然后题目说是登陆网站的流量包,上传的是登录的信息,所以搜索http.request.method==POST找到一个包
右击追踪tcp流
从而找到关键信息
email=flag&password=ffb7567a1d4f4abdffdb54e022f8facd&captcha=BYUG
得到flag{ffb7567a1d4f4abdffdb54e022f8facd}
2、被嗅探到的流量
用wireshark工具打开
找到一个包含jpg图片的数据包
右击tcp流跟踪一下,最底下找到flag
3、数据包中的线索
wireshark打开
根据题目中说‘在线交流’所以可以判定为http的数据包,然后过滤一下http的数据包
追踪该数据包的http流,由开头”/9j/”,可知以下数据为jpg图片,“/9j/”经base64解码后结果为“\xff \xd8 \xff”,该三字节为jpg文件的开头三字节,所以可推断出以下文件为jpg文件。
然后使用base64编码解密成图片的网站或者用格式输入data:image/jpg;base64,编码
网站https://www.wenyiso.com/tool/base642image/
然后解密出照片得到flag
4、小明的保险箱
打开后是一张图片
根据题意可以发现内部一定还含有隐藏的文件,可以先把后缀名改成zip试试
改完之后发现是一个有密码的压缩包,根据提示是纯四位数字,暴力破解一下试试
得到密码7869
解压后得到txt文件,打开之后就是flag
5、认真你就输了
打开之后是一个损坏的xls文件,修改一下文件格式为zip试试
改完之后发现是一个压缩包,就解压之后查看一下文件
在chart文件夹下找到flag.txt