#include<iostream>#include<Windows.h>#include"ida_defs.h"//函數指針typedefsigned__int64(*Dllfunc)(int);
using namespace std;intmain(){Dllfunc GameObject;//GameObject是dll中想要調用的函數名稱HINSTANCE hdll =NULL;hdll =LoadLibrary("Interface.dll");//加載dll if(hdll ==NULL){cout <<"加載動態庫失敗\n";}else{GameObject =(Dllfunc)GetProcAddress(hdll,"GameObject");//到dll中定位函數if(GameObject ==NULL){cout <<"加載動態庫方法失敗\n";}else{for(int i =0; i <=99; i++){signed __int64 res =GameObject(i);}}}FreeLibrary(hdll);//釋放dllreturn0;}/*
You win! flag is
flag{Ch4rp_W1th_R$@}
*/
#coding:utf-8import base64
table="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
table_changed="0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm+/="
data=[0x08,0x3b,0x01,0x20,0x07,0x34,0x09,0x1f,0x18,0x24,0x13,0x03,0x10,0x38,0x09,0x1b,0x08,0x34,0x13,0x02,0x08,0x22,0x12,0x03,0x05,0x06,0x12,0x03,0x0f,0x22,0x12,0x17,0x08,0x01,0x29,0x22,0x06,0x24,0x32,0x24,0x0f,0x1f,0x2b,0x24,0x03,0x15,0x41,0x41]
s=""
ss=""for i in data:s+=table[i-1]#s賦完值其實是輸入經變表base64后的結果for c in s:ss+=table[table_changed.find(c)]#由變表和常規表的映射得到常規base64編碼的結果print(base64.b64decode(ss))#de1ctf{E_L4nguag3_1s_K3KeK3_N4Ji4}
[ACTF新生賽2020]Splendid_MineCraft
exe程序,運行后輸入,無殼,ida分析 交叉引用字符串"Welcome to ACTF_Splendid_MineCraft!“來到sub_401080函數 讀取輸入,驗證輸入的長度是否為26,strtok函數用字符’_'將輸入分割成三個部分,于是可知輸入的格式為"ACTF{xxxxxx_yyyyyy_xxxxxx}”,v12-v13(v14-v15)為{}中的第一部分"xxxxxx",v8-v9為{}中的第二部分"yyyyyy",v10-v11為{}中的第三部分"xxxxxx"
#coding:utf-8
flag="ACTF{"#第一部分
s1="3@1b;b"
s2="elcome"
data=[]for i inrange(len(s1)):data.append(ord(s1[i])^ord(s2[i]))for i inrange(len(data)):data[i]+=0x23
flag+=''.join(chr(i)for i in data)
flag+='_'#第二部分
data=[0xF6,0xA3,0x5B,0x9D,0xE0,0x95,0x98,0x68,0x8C,0x65,0xBB,0x76,0x89,0xD4,0x09,0xFD,0xF3,0x5C,0x3C,0x4C,0x36,0x8E,0x4D,0xC4,0x80,0x44,0xD6,0xA9,0x01,0x32,0x77,0x29,0x90,0xBC,0xC0,0xA8,0xD8,0xF9,0xE1,0x1D,0xE4,0x67,0x7D,0x2A,0x2C,0x59,0x9E,0x3D,0x7A,0x34,0x11,0x43,0x74,0xD1,0x62,0x60,0x02,0x4B,0xAE,0x99,0x57,0xC6,0x73,0xB0,0x33,0x18,0x2B,0xFE,0xB9,0x85,0xB6,0xD9,0xDE,0x7B,0xCF,0x4F,0xB3,0xD5,0x08,0x7C,0x0A,0x71,0x12,0x06,0x37,0xFF,0x7F,0xB7,0x46,0x42,0x25,0xC9,0xD0,0x50,0x52,0xCE,0xBD,0x6C,0xE5,0x6F,0xA5,0x15,0xED,0x64,0xF0,0x23,0x35,0xE7,0x0C,0x61,0xA4,0xD7,0x51,0x75,0x9A,0xF2,0x1E,0xEB,0x58,0xF1,0x94,0xC3,0x2F,0x56,0xF7,0xE6,0x86,0x47,0xFB,0x83,0x5E,0xCC,0x21,0x4A,0x24,0x07,0x1C,0x8A,0x5A,0x17,0x1B,0xDA,0xEC,0x38,0x0E,0x7E,0xB4,0x48,0x88,0xF4,0xB8,0x27,0x91,0x00,0x13,0x97,0xBE,0x53,0xC2,0xE8,0xEA,0x1A,0xE9,0x2D,0x14,0x0B,0xBF,0xB5,0x40,0x79,0xD2,0x3E,0x19,0x5D,0xF8,0x69,0x39,0x5F,0xDB,0xFA,0xB2,0x8B,0x6E,0xA2,0xDF,0x16,0xE2,0x63,0xB1,0x20,0xCB,0xBA,0xEE,0x8D,0xAA,0xC8,0xC7,0xC5,0x05,0x66,0x6D,0x3A,0x45,0x72,0x0D,0xCA,0x84,0x4E,0xF5,0x31,0x6B,0x92,0xDC,0xDD,0x9C,0x3F,0x55,0x96,0xA1,0x9F,0xCD,0x9B,0xE3,0xA0,0xA7,0xFC,0xC1,0x78,0x10,0x2E,0x82,0x8F,0x30,0x54,0x04,0xAC,0x41,0x93,0xD3,0x3B,0xEF,0x03,0x81,0x70,0xA6,0x1F,0x22,0x26,0x28,0x6A,0xAB,0x87,0xAD,0x49,0x0F,0xAF]
res=[0x30,0x4,0x4,0x3,0x30,0x63]for i inrange(len(res)):for j inrange(len(data)):if data[j]==res[i]:flag+=chr(j^(i+0x83))
flag+='_'#第三部分
flag+="5mcsM<"
flag+='}'print(flag)#ACTF{yOu0y*_knowo3_5mcsM<}