[XCTF] 逆向 re1-100

下载附件,先查看一下文件信息

Linux64位程序,带调试信息。

先随手运行一下看看

 丢尽IDA64打开

printf("Input key : ");
memset(bufWrite, 0, sizeof(bufWrite));
gets(bufWrite);
v4 = strlen(bufWrite);
v5 = write(pParentWrite[1], bufWrite, v4);
if ( v5 != strlen(bufWrite) )
    printf("parent - partial/failed write");
do
{
    memset(bufParentRead, 0, sizeof(bufParentRead));
    numReada = read(pParentRead[0], bufParentRead, 0xC8uLL);
    v6 = bCheckPtrace || checkDebuggerProcessRunning();
    if ( !v6 && checkStringIsNumber(bufParentRead) && atoi(bufParentRead) )
    {
    puts("True");
    if ( close(pParentWrite[1]) == -1 )
        exit(1);
    exit(0);
    }
    puts("Wrong !!!\n");
}
while ( numReada == -1 );

看来利用debug有点麻烦,那就看静态分析

 我们的原输入通过一个confuseKey函数混淆

这里的输入被分为了4个部分,

szPart1 = szKey[1:10]
szPart2 = szKey[11:20]
szPart3 = szKey[21:30]
szPart4 = szKey[31:40]

 顺序是3、4、1、2,拆出来再按3、4、1、2的顺序排列就可以得到正常答案

szKey = '{daf29f59034938ae4efd53fc275d81053ed5be8c}'
szPart1 = szKey[1:11]
szPart2 = szKey[11:21]
szPart3 = szKey[21:31]
szPart4 = szKey[31:41]
flag = szPart3 + szPart4 + szPart1 + szPart2
print(flag)
"""output
53fc275d81053ed5be8cdaf29f59034938ae4efd
"""

加上头尾

{53fc275d81053ed5be8cdaf29f59034938ae4efd}

当然,提交的时候有个坑,不带花括号,提交时要提交 53fc275d81053ed5be8cdaf29f59034938ae4efd

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值