攻防世界-adworld-reverse-game

23 篇文章 0 订阅
5 篇文章 0 订阅

#adworld-reverse-game

image-20221028205016278

image-20221028204952528

从1依次输入到8,每个数字会车,最后通关,获得flag

                 |-----------------------▲--------|
                 |-----------------------●--------|
                 |-----------------------◆--------|
                 |-----------------------■--------|

|--------------------|-----------------------★--------|
| |-----------------------▼--------|
| |--------------------(°Д°)-----|
| |--------------------(*°▽°)=3–|
二 |
| by 0x61 |

done!!! the flag is zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}
input n,n(1-8)
1.△ 2.○ 3.◇ 4.□ 5.☆ 6.▽ 7.( ̄▽ ̄)/ 8.(;°Д°) 0.restart
n=

IDA:

搜索play a game

image-20221028215457985

F5反编译

image-20221028215420778

image-20221028215525082

得到的反编译代码:

sub_45A7BE((int)"done!!! the flag is ", v1);
  v60 = 18;
  v61 = 64;
  v62 = 98;
  v63 = 5;
  v64 = 2;
  v65 = 4;
  v66 = 6;
  v67 = 3;
  v68 = 6;
  v69 = 48;
  v70 = 49;
  v71 = 65;
  v72 = 32;
  v73 = 12;
  v74 = 48;
  v75 = 65;
  v76 = 31;
  v77 = 78;
  v78 = 62;
  v79 = 32;
  v80 = 49;
  v81 = 32;
  v82 = 1;
  v83 = 57;
  v84 = 96;
  v85 = 3;
  v86 = 21;
  v87 = 9;
  v88 = 4;
  v89 = 62;
  v90 = 3;
  v91 = 5;
  v92 = 4;
  v93 = 1;
  v94 = 2;
  v95 = 3;
  v96 = 44;
  v97 = 65;
  v98 = 78;
  v99 = 32;
  v100 = 16;
  v101 = 97;
  v102 = 54;
  v103 = 16;
  v104 = 44;
  v105 = 52;
  v106 = 32;
  v107 = 64;
  v108 = 89;
  v109 = 45;
  v110 = 32;
  v111 = 65;
  v112 = 15;
  v113 = 34;
  v114 = 18;
  v115 = 16;
  v116 = 0;
  v3 = 123;
  v4 = 32;
  v5 = 18;
  v6 = 98;
  v7 = 119;
  v8 = 108;
  v9 = 65;
  v10 = 41;
  v11 = 124;
  v12 = 80;
  v13 = 125;
  v14 = 38;
  v15 = 124;
  v16 = 111;
  v17 = 74;
  v18 = 49;
  v19 = 83;
  v20 = 108;
  v21 = 94;
  v22 = 108;
  v23 = 84;
  v24 = 6;
  v25 = 96;
  v26 = 83;
  v27 = 44;
  v28 = 121;
  v29 = 104;
  v30 = 110;
  v31 = 32;
  v32 = 95;
  v33 = 117;
  v34 = 101;
  v35 = 99;
  v36 = 123;
  v37 = 127;
  v38 = 119;
  v39 = 96;
  v40 = 48;
  v41 = 107;
  v42 = 71;
  v43 = 92;
  v44 = 29;
  v45 = 81;
  v46 = 107;
  v47 = 90;
  v48 = 85;
  v49 = 64;
  v50 = 12;
  v51 = 43;
  v52 = 76;
  v53 = 86;
  v54 = 13;
  v55 = 114;
  v56 = 1;
  v57 = 117;
  v58 = 126;
  v59 = 0;
  for ( i = 0; i < 56; ++i )
  {
    *(&v3 + i) ^= *(&v60 + i);
    *(&v3 + i) ^= 0x13u;
  }
  return sub_45A7BE((int)"%s\n", (unsigned int)&v3);
}

两个数组求和,再与0x13u

利用python求解

import re

# sub_45A7BE((int)"done!!! the flag is ", v1);
#   v60 = 18;
#   v61 = 64;
#   v62 = 98;
#   v63 = 5;
#   v64 = 2;
#   v65 = 4;
#   v66 = 6;
#   v67 = 3;
#   v68 = 6;
#   v69 = 48;
#   v70 = 49;
#   v71 = 65;
#   v72 = 32;
#   v73 = 12;
#   v74 = 48;
#   v75 = 65;
#   v76 = 31;
#   v77 = 78;
#   v78 = 62;
#   v79 = 32;
#   v80 = 49;
#   v81 = 32;
#   v82 = 1;
#   v83 = 57;
#   v84 = 96;
#   v85 = 3;
#   v86 = 21;
#   v87 = 9;
#   v88 = 4;
#   v89 = 62;
#   v90 = 3;
#   v91 = 5;
#   v92 = 4;
#   v93 = 1;
#   v94 = 2;
#   v95 = 3;
#   v96 = 44;
#   v97 = 65;
#   v98 = 78;
#   v99 = 32;
#   v100 = 16;
#   v101 = 97;
#   v102 = 54;
#   v103 = 16;
#   v104 = 44;
#   v105 = 52;
#   v106 = 32;
#   v107 = 64;
#   v108 = 89;
#   v109 = 45;
#   v110 = 32;
#   v111 = 65;
#   v112 = 15;
#   v113 = 34;
#   v114 = 18;
#   v115 = 16;
#   v116 = 0;
#   v3 = 123;
#   v4 = 32;
#   v5 = 18;
#   v6 = 98;
#   v7 = 119;
#   v8 = 108;
#   v9 = 65;
#   v10 = 41;
#   v11 = 124;
#   v12 = 80;
#   v13 = 125;
#   v14 = 38;
#   v15 = 124;
#   v16 = 111;
#   v17 = 74;
#   v18 = 49;
#   v19 = 83;
#   v20 = 108;
#   v21 = 94;
#   v22 = 108;
#   v23 = 84;
#   v24 = 6;
#   v25 = 96;
#   v26 = 83;
#   v27 = 44;
#   v28 = 121;
#   v29 = 104;
#   v30 = 110;
#   v31 = 32;
#   v32 = 95;
#   v33 = 117;
#   v34 = 101;
#   v35 = 99;
#   v36 = 123;
#   v37 = 127;
#   v38 = 119;
#   v39 = 96;
#   v40 = 48;
#   v41 = 107;
#   v42 = 71;
#   v43 = 92;
#   v44 = 29;
#   v45 = 81;
#   v46 = 107;
#   v47 = 90;
#   v48 = 85;
#   v49 = 64;
#   v50 = 12;
#   v51 = 43;
#   v52 = 76;
#   v53 = 86;
#   v54 = 13;
#   v55 = 114;
#   v56 = 1;
#   v57 = 117;
#   v58 = 126;
#   v59 = 0;
#   for ( i = 0; i < 56; ++i )
#   {
#     *(&v3 + i) ^= *(&v60 + i);
#     *(&v3 + i) ^= 0x13u;
#   }
#   return sub_45A7BE((int)"%s\n", (unsigned int)&v3);
# }

# 两个数组求和,再与0x13u

s='''v60 = 18;
  v61 = 64;
  v62 = 98;
  v63 = 5;
  v64 = 2;
  v65 = 4;
  v66 = 6;
  v67 = 3;
  v68 = 6;
  v69 = 48;
  v70 = 49;
  v71 = 65;
  v72 = 32;
  v73 = 12;
  v74 = 48;
  v75 = 65;
  v76 = 31;
  v77 = 78;
  v78 = 62;
  v79 = 32;
  v80 = 49;
  v81 = 32;
  v82 = 1;
  v83 = 57;
  v84 = 96;
  v85 = 3;
  v86 = 21;
  v87 = 9;
  v88 = 4;
  v89 = 62;
  v90 = 3;
  v91 = 5;
  v92 = 4;
  v93 = 1;
  v94 = 2;
  v95 = 3;
  v96 = 44;
  v97 = 65;
  v98 = 78;
  v99 = 32;
  v100 = 16;
  v101 = 97;
  v102 = 54;
  v103 = 16;
  v104 = 44;
  v105 = 52;
  v106 = 32;
  v107 = 64;
  v108 = 89;
  v109 = 45;
  v110 = 32;
  v111 = 65;
  v112 = 15;
  v113 = 34;
  v114 = 18;
  v115 = 16;
  v116 = 0;
  v3 = 123;
  v4 = 32;
  v5 = 18;
  v6 = 98;
  v7 = 119;
  v8 = 108;
  v9 = 65;
  v10 = 41;
  v11 = 124;
  v12 = 80;
  v13 = 125;
  v14 = 38;
  v15 = 124;
  v16 = 111;
  v17 = 74;
  v18 = 49;
  v19 = 83;
  v20 = 108;
  v21 = 94;
  v22 = 108;
  v23 = 84;
  v24 = 6;
  v25 = 96;
  v26 = 83;
  v27 = 44;
  v28 = 121;
  v29 = 104;
  v30 = 110;
  v31 = 32;
  v32 = 95;
  v33 = 117;
  v34 = 101;
  v35 = 99;
  v36 = 123;
  v37 = 127;
  v38 = 119;
  v39 = 96;
  v40 = 48;
  v41 = 107;
  v42 = 71;
  v43 = 92;
  v44 = 29;
  v45 = 81;
  v46 = 107;
  v47 = 90;
  v48 = 85;
  v49 = 64;
  v50 = 12;
  v51 = 43;
  v52 = 76;
  v53 = 86;
  v54 = 13;
  v55 = 114;
  v56 = 1;
  v57 = 117;
  v58 = 126;
  v59 = 0;
  
  '''
s01='''v60 = 18;
  v61 = 64;
  v62 = 98;
  v63 = 5;
  v64 = 2;
  v65 = 4;
  v66 = 6;
  v67 = 3;
  v68 = 6;
  v69 = 48;
  v70 = 49;
  v71 = 65;
  v72 = 32;
  v73 = 12;
  v74 = 48;
  v75 = 65;
  v76 = 31;
  v77 = 78;
  v78 = 62;
  v79 = 32;
  v80 = 49;
  v81 = 32;
  v82 = 1;
  v83 = 57;
  v84 = 96;
  v85 = 3;
  v86 = 21;
  v87 = 9;
  v88 = 4;
  v89 = 62;
  v90 = 3;
  v91 = 5;
  v92 = 4;
  v93 = 1;
  v94 = 2;
  v95 = 3;
  v96 = 44;
  v97 = 65;
  v98 = 78;
  v99 = 32;
  v100 = 16;
  v101 = 97;
  v102 = 54;
  v103 = 16;
  v104 = 44;
  v105 = 52;
  v106 = 32;
  v107 = 64;
  v108 = 89;
  v109 = 45;
  v110 = 32;
  v111 = 65;
  v112 = 15;
  v113 = 34;
  v114 = 18;
  v115 = 16;
  v116 = 0;'''
s02='''v3 = 123;
  v4 = 32;
  v5 = 18;
  v6 = 98;
  v7 = 119;
  v8 = 108;
  v9 = 65;
  v10 = 41;
  v11 = 124;
  v12 = 80;
  v13 = 125;
  v14 = 38;
  v15 = 124;
  v16 = 111;
  v17 = 74;
  v18 = 49;
  v19 = 83;
  v20 = 108;
  v21 = 94;
  v22 = 108;
  v23 = 84;
  v24 = 6;
  v25 = 96;
  v26 = 83;
  v27 = 44;
  v28 = 121;
  v29 = 104;
  v30 = 110;
  v31 = 32;
  v32 = 95;
  v33 = 117;
  v34 = 101;
  v35 = 99;
  v36 = 123;
  v37 = 127;
  v38 = 119;
  v39 = 96;
  v40 = 48;
  v41 = 107;
  v42 = 71;
  v43 = 92;
  v44 = 29;
  v45 = 81;
  v46 = 107;
  v47 = 90;
  v48 = 85;
  v49 = 64;
  v50 = 12;
  v51 = 43;
  v52 = 76;
  v53 = 86;
  v54 = 13;
  v55 = 114;
  v56 = 1;
  v57 = 117;
  v58 = 126;
  v59 = 0;
  
  '''
def trim(s):
    r = re.findall('[\S]+', s)
    return " ".join(r)
from bs4 import BeautifulSoup as bs

#s1=s.split('v*=')
# s1=trim(s)

# print(s1)

# ss1= bs(s, "lxml")
# ss2=re.findall('.*= (.*?);',s)

# #ss2=re.findall('.*=(.*?);',)
# #strOnes=re.findall('.*>(.*?)</a.*',trim(str(strList[0])))
# print(ss2)

# print(s01)

# ss01=bs(trim(s01),"lxml")
# ss02=bs(trim(s02),"lxml")

# # print(ss01)
# # print(ss02)


# sss01=re.findall('.*= (.*?);',ss01)
# sss02=re.findall('.*= (.*?);',ss02)

# print(sss01)
# print(sss02)

ss01=re.findall('.*= (.*?);',s01)
ss02=re.findall('.*= (.*?);',s02)

print(ss01)
print(ss02)



flag=''
for i in range(len(ss01)):
    flag+=chr(int(ss01[i])^int(ss02[i])^0x13)

print(flag)



使用OD方法:

image-20221029215017000

image-20221029215107112

参考博文:

  1. https://copyfuture.com/blogs-details/20211116195508177z
  2. https://blog.csdn.net/song_10/article/details/83621118
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值