[DDCTF2018](╯°□°)╯︵ ┻━┻ WriteUp

题目地址:BUUCTF在线评测

文本内容:

(╯°□°)╯︵ ┻━┻
50pt

(╯°□°)╯︵ ┻━┻

d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd

单看文本内容,除了这一长串的数字好像每什么其他的东西了。那就从这里入手,首先看它的长度,有135左右,那就排除md5和sha1加密。可能是十六进制的字符串。那就把它转成十进制再转成ascii码就行了。

脚本如下:

finish = []
#将十六进制的数据.append在一个空的数组里面方便做切片
flag = ''
#定义一个空的flag 方便等一下输出
number = 'd4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd'
#第一个for循环的作用是将十六进制数据以每两个一组分割
for i in range(0,len(number),2):
#以题目给的长度做for循环,后面的2是步长,意思是每次for循环结束后i都会加2。第
    number_good = number[i:i+2]
#做切片,在这个时候十六进制数据就已经是两个两个的被分割了
    finish.append(number_good)
#第二个for循环的作用则是将分号的十六进制转换成十进制再转换成ascii码
for k in range(0,len(finish)):
    fla = (chr(int(finish[k],16) - 128))
#在调试的时候发现输出的十进制均大于128,所以减去128.输出正确的flag	
    flag += fla
#使用+=加到一个空值里
print (flag)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值