攻防世界WP-reverse-alexctf-2017-re2-cpp-is-awesome

17 篇文章 0 订阅
15 篇文章 0 订阅

在这里插入图片描述废话不多说,无壳直接拖入IDA。
关键代码

 for ( i = std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::begin(&v11); ; sub_400D7A(&i) )
  {
    v13 = std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>>::end(&v11);
    if ( !sub_400D3D((__int64)&i, (__int64)&v13) )
      break;
    v8 = *(unsigned __int8 *)sub_400D9A(&i);
    if ( (_BYTE)v8 != off_6020A0[dword_6020C0[v14]] )
      sub_400B56((__int64)&i, (__int64)&v13, v8);
    ++v14;
  }

sub_400B56这个函数打印出来的结果是Better luck next time,所以上面的判断if ( (_BYTE)v8 != off_6020A0[dword_6020C0[v14]] )一定要成立,然后看off_6020A0dword_6020C0的值。以dword_6020C0index,在字符串里面找值,最终结果为flag
python代码如下

str_key="L3t_ME_T3ll_Y0u_S0m3th1ng_1mp0rtant_A_{FL4G}_W0nt_b3_3X4ctly_th4t_345y_t0_c4ptur3_H0wev3r_1T_w1ll_b3_C00l_1F_Y0u_g0t_1t"
key=[36, 0, 5, 54, 101, 7, 39, 38, 45, 1, 3, 0, 13, 86, 1, 3, 101, 3, 45, 22, 2, 21, 3, 101, 0, 41, 68, 68,  1,  68, 43]
result = ""
for i in range(len(key)):
    result += str_key[key[i]]
print(result)
	

flagALEXCTF{W3_L0v3_C_W1th_CL45535}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值