[BUUCTF]REVERSE——[ACTF新生赛2020]easyre

[ACTF新生赛2020]easyre

附件

步骤

  1. 查壳,32位程序,upx壳儿
    [BUUCTF]REVERSE——[ACTF新生赛2020]easyre

  2. 脱完壳儿,扔进ida
    [BUUCTF]REVERSE——[ACTF新生赛2020]easyre

  3. 分析
    一开始给我们定义了一个数组,
    v4=[42,70,39,34,78,44,34,40,73, 63, 43, 64]
    之后让我们输入一个字符串,根据43行的if判断可以知道我们输入的字符串的开头是ACT{},就是flag
    根据48行的if判断可知。ACT{}括号里的值长度为12,v4=byte_402000[输入的数组的每一位值-1]
    在ida里可以看到byte_402000数组的值
    [BUUCTF]REVERSE——[ACTF新生赛2020]easyre
    根据这个算法逆向一下就能得到我们输入的字符串,也就是flag

v4 = [42,70,39,34,78,44,34,40,73,63,43,64]
string = chr(0x7E)+"}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)(" + chr(0x27) + '&%$# !"'
flag="" for i in v4:
for j in range(1,len(string)):
if i == ord(string[j]):
flag+=chr(j+1) print ("flag{"+flag+"}")

[BUUCTF]REVERSE——[ACTF新生赛2020]easyre

上一篇:Codeforces 801 A.Vicious Keyboard & Jxnu Group Programming Ladder Tournament 2017江西师大新生赛 L1-2.叶神的字符串


下一篇:[BUUCTF]REVERSE——[ACTF新生赛2020]rome