前言
公司每年的6月份會舉辦一場奪旗大賽,作為讀書會的小組成員。我就負責出了一份比較簡單的iOS題
CTF移動端題目
1.灰原同學提出可以檢視監控,但監控室的門是用密碼鎖上的,門上只有了一串英文字母MjM4MzIxNDE0Mg==,你可以幫助少年偵探團開啟門嗎?
解題思路
base64解碼得到2383214142
通過手機鍵盤-九宮格得到
答案 CVAGH
複製程式碼
2.在暗格門裡發現作案者留下的檔案包,但是卻需要賬戶和密碼才能開啟,通過下面的程式碼和檔案你能幫助柯南找出答案嗎?
@interface MyAccount : NSObject
@property (nonatomic, copy) NSString *flag;
@end
@implementation MyAccount
@end
複製程式碼
解題思路
1、.m檔案實現NSCoding協議,補充程式碼如下
#import "MyAccount.h"
@interface MyAccount()<NSCoding>
@end
@implementation MyAccount
- (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.flag forKey:@"flag"];
}
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
_flag = [decoder decodeObjectForKey:@"flag"];
}
return self;
}
@end
2、匯入data包,NSKeyedUnarchiver解檔物件,得到flag: c2h1aXJ1aWtlamljdGY=
NSString *dataFile = [[NSBundle mainBundle]pathForResource:@"data" ofType:@"asd"];
MyAccount *model = [NSKeyedUnarchiver unarchiveObjectWithFile:dataFile];
NSLog(@"dataFile = %@",model.flag);
3、使用base64解碼得到
答案: shuiruikejictf
複製程式碼
3.偵探少年團解答出賬戶和密碼後並開啟檔案包後,發現盜賊留下了一份挑戰書“你想要的密碼就在我的ipa包中”,你能從MySercretKey.ipa包中讀取到答案嗎?
解題思路
使用Hopper Disassembler工具反編譯
如下圖讀取到
flag = U2FsdGVkX18wjamzHeMlywW3nE/EPSImPYlN25ihcf0=
decode = shurui
使用AES 解密(金鑰shurui)
答案:flag = asdxczcsa
複製程式碼