KCTF2019 Q3 签到题WP

前言

  • 从这一次开始制定了新规则后,本来就是菜鸡的我连签到题都跪了。┭┮﹏┭┮。赛后看到别人的题解才知道自己栽在了哪里。

分析

在这里插入图片描述

  • 程序首先将输入的user_name转成十六进制,不足十六位用0补齐,然后将输入的serial转成相应的数值,与自身比较。这一步主要是为了校验serial是否是大写的十六进制数据。
  • 然后将十六进制的serial与十六进制的uername 异或,后面就是三次MD5。其实后面这三次MD5根本不用管,因为题目已经给出了一组正确的username和serial,要求username= KCTF 的serial。只要用之前正确的那组十六进制的serial与十六进制的uername异或的结果再与十六进制的username= KCTF 异或即要求的serial。
  • 我TM都分析到这了,结果还算错了。错在了程序中将整形传递到xmm寄存器里进行异或时数据的对齐方的理解。
  • 应该是在数据的后边用0补齐再异或。

EXP

#encoding=utf-8
user=int("5D78C3FDF21998AC".encode("hex"),16)
serial=0xF3A0FD8D8DE1FEB889808A8FF2D7FDA2
key=user^serial
#错误解法:
'''
name=int("KCTF".encode("hex"),16)
print hex(key^name).upper()[2:][::-1]
'''
#正确解法:
name=int("KCTF".encode("hex"),16)<<(12*8)
print hex(key^name).upper()[2:-1]

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值