记2017问鼎杯预赛的wp---来自一个小菜鸡的感想

时间:2022-02-03 19:50:56

这次准备写一下几个misc和密码题目。。很坑。

打了一整天的比赛,越来越觉得自己很菜了。

有一道题目叫做“真真假假”,这道题目只有一个提示——Xor。第一眼知道是异或,也就知道这一个信息。打开这个文件发现一堆16进制的有对称美的代码。

1307 0a44 2305 0605 3d01 3e4f 192e 010a
4423 1343 1f3c 0a79 011a 310a 0344 2a14
0e04 211c 3516 5526 0101 0b39 1b00 0e27
5579 4d3c 334f 0617 6c14 431f 261a 2d07
5532 0106 1229 0710 0a38 0320 4f14 2404
010b 3b19 060f 330a 3d43 5533 070e 106c
1443 183d 013e 0310 6702 0e0a 6c1c 0d4b
2400 2a1c 1034 1c06 0b22 550c 0d74 0e79
081a 280b 4f02 2307 171e 3a0a 7902 0034
1b4f 0629 550a 0574 1838 0101 6700 0944
2d55 1402 320a 774d 5513 0706 176c 0606
1f27 4f34 0e07 3506 0e03 2955 0218 740e
790c 1029 1b1d 0520 5510 1e36 053c 0c01
a5ef fb05 2211 4319 310e 3503 0c6b 4f0e
442f 100d 1f26 0e35 4f05 3500 0d08 2918
81eb c009 361d 5533 070a 4422 1a15 0e38
4f3e 0a1b 221d 0e08 200c 4d4b 060a 380b
1035 1c4f 053e 1043 1b3b 062a 0a11 671b
0044 3d00 0618 2006 3601 5530 070a 1024
1011 4b3b 1d79 011a 334f 1b0c 2906 064b
2706 3708 1922 4f02 0122 5502 1931 4379
061b 6709 0e07 3859 4302 3a4f 2e0e 1b33
4f00 026c 1443 1c3d 093c 4355 281d 4f0d
2a55 101e 3707 790b 1034 061d 013f 5502
1931 4f3d 0616 330e 1b01 2855 0112 741b
310a 5565 010a 0d2b 1d01 0421 1d31 001a
234d 4f02 2d18 0a07 3d0a 2a4f 1429 0b4f
1024 100a 1974 0b38 1a12 2f1b 0a16 3f55
1403 3b4f 2b0a 0432 061d 016c 1443 4933
0036 0b55 2100 1d10 391b 0649 7a4f 140e
0735 060e 0329 550a 1874 0e79 0c1a 2a1f
0301 3455 1004 3706 3803 5526 0c1b 0d3a
1c17 1274 1b31 0e01 671b 0e0f 2906 431b
3b03 301b 1c24 0e03 4429 160c 053b 0220
4355 2601 0b44 2916 0c05 3b02 204f 1828
1d0a 442b 100d 0e26 0e35 030c 6b4f 060a
381a 430a 370c 361a 1b33 414f 2d22 5517
0331 4f3a 0e06 224f 0002 6c36 0b0a 2603
361b 0122 4f23 112f 1410 4774 0936 1d55
2217 0e09 3c19 0647 741b 310a 5534 0a0a
0925 1b04 4b27 1a3a 0c10 341c 4f0b 2a55
0b0e 264f 340e 0735 060e 0329 550f 0231
1c79 061b 671b 0701 6c16 0c06 3200 2b1b
1425 030a 4429 160c 053b 0220 4f1a 214f
1b0c 291c 114b 3c00 2c1c 102f 0003 0060
5514 033d 033c 4f01 2f0a 4f16 2919 021f
3d00 371c 1d2e 1f4f 0629 0114 0e31 0179
2207 670e 0100 6c38 1118 742d 3c01 1b22
1b4f 1729 0715 0e27 4f2d 0055 2e03 0311
3f01 110a 200a 790d 1423 4f02 053e 070a
0a33 0a2a 4f17 261c 0a00 6c1a 0d4b 3501
7906 1b2e 1b06 0520 5502 1f20 1d38 0c01
2e00 0144 2d1b 074b 271a 2b09 1424 0a4f
0b3a 1011 4b27 1a3b 1c01 2601 0c01 6c5d
0608 3b01 3602 1c24 4f0e 0a28 5513 182d
0c31 0019 2808 0607 2d19 4a45 743b 310a
5505 0a01 0a29 0110 4c74 0238 1d07 2e0e
0801 6c1c 104b 3b01 3c4f 0632 0c07 4429
0d02 0624 033c 4f01 2f0e 1b44 381d 064b
2d00 2c01 1222 1c1b 440e 100d 0531 1b75
4f39 3e0b 0605 6055 1402 3803 790c 1a2a
0a4f 1023 5511 0e79 0a37 0e16 334f 180d
381d 433c 3d0c 3207 142a 434f 0522 1143
1f3c 0a79 1d10 341a 0310 3f55 0219 314f
3f0e 0767 091d 0b21 5505 0e38 063a 0601
281a 1c4a 6c02 070d 380e 3e14 2c28 1a4f
253e 1043 3d31 1d20 4f26 2a0e 1d10 3121
0b04 2108 314f 012f 0a4f 0729 1b17 1935
0379 0c1d 261d 0e07 3810 1118 784f 1c03
1c3d 0e0d 0138 1d43 0a3a 0b79 2b14 350c
1648 6c17 060c 3d01 791b 1d22 4f01 0b3a
100f 4b35 1c79 071a 341b 0608 2955 0208
251a 3806 1b33 0e01 0729 0643 0a3a 0b79
1a1b 2b06 0401 200c 430d 2606 3c01 1134
434f 1024 101a 4b31 193c 0101 320e 0308
3555 1404 2604 791b 1a67 1a01 0029 0710
1f35 013d 4f10 260c 0744 2301 0b0e 264f
3801 1167 1b07 0121 0606 0722 0a2a 4f06
284f 1b0c 2d01 431f 3c0a 204f 1626 014f
092d 0711 1274 0a38 0c1d 6700 1b0c 2907
4304 3a4f 3a00 1837 0e1b 0d2e 1906 4b20
0a2b 0206 671f 0a16 3f1a 0d0a 3803 2043
5522 190a 0a6c 1c05 4b20 073c 0607 674d
0a15 3914 0f49 741c 360c 1c26 034f 1738
1417 1e27 4f2b 0a18 2606 0117 6c13 110a
2108 311b 5b67 3807 0122 5526 073d 1538
0d10 3307 4f16 291f 0608 201c 792b 1435
0c16 433f 5505 0226 1c2d 4f05 3500 1f0b
3f14 0f47 741b 310a 5526 1d08 1121 100d
1f74 003f 4f1a 2903 1644 2114 1119 2d06
3708 5530 070a 0a6c 1a0d 0e74 062a 4f1c
294f 030b 3a10 4302 274f 3001 0135 000b
112f 1007 4574 2a35 060f 260d 0a10 2455
0c05 3816 790e 1624 0a1f 103f 5527 0a26
0c20 4806 671f 1d0b 3c1a 100a 384f 2e07
1029 4f1c 0c29 550a 1874 0c3c 1d01 2606
0144 3f1d 064b 3800 2f0a 0667 0706 096c
140d 0f74 073c 1d55 210a 0a08 251b 0418
740e 2b0a 5535 0a0c 0d3c 070c 0835 1b3c
0b5b 672e 1a17 3810 0d4c 274f 3a00 1837
030a 1c6c 0608 0e20 0c31 061b 204f 0002
6c11 0a0d 320a 2b0a 1b33 4f02 053e 070a
0a33 0a2a 4f00 2b1b 0609 2d01 0607 2d4f
3803 1928 181c 443e 1002 0f31 1d2a 4f01
284f 1e11 2906 1702 3b01 7918 1d26 1b4f
0223 070e 1874 003f 4f14 2b03 0605 2216
064b 351d 3c4f 1122 1c06 162d 170f 0e78
4f3c 1c05 220c 0605 2019 1a4b 2307 3c01
552e 1b4f 0723 1806 1874 1b36 4f05 3506
190d 2010 0402 3a08 790a 1628 0100 0925
164f 4b27 0a21 1a14 2b43 4f07 2318 130a
3a06 3601 1433 0a4f 0538 0111 0a37 1b30
001b 69

第一次做这种类型的题目,并不知道这个题目的套路。之后查了很多资料,我在这里分享一个简单的方法。

https://github.com/hellman/xortool 

这里要用到python 的  xortool的方法,在python的Script目录下运行xortool,然后放进去下载出来的文件,分析得到

C:\Python27\Scripts>python xortool E:\cipher
The most probable key lengths:
2: 12.2%
5: 11.9%
9: 9.8%
13: 22.2%
20: 6.8%
22: 6.2%
26: 12.8%
30: 4.6%
39: 7.8%
52: 5.7%
Key-length can be 3*n
Most possible char is needed to guess the key!

C:\Python27\Scripts>

然后使用-c 20命令得到

C:\Python27\Scripts>python xortool E:\cipher -c 20
The most probable key lengths:
2: 12.2%
5: 11.9%
9: 9.8%
13: 22.2%
20: 6.8%
22: 6.2%
26: 12.8%
30: 4.6%
39: 7.8%
52: 5.7%
Key-length can be 3*n
1 possible key(s) of length 13:
Good\tuckToYou
Found 1 plaintexts with 95.0%+ printable characters
See files filename-key.csv, filename-char_used-perc_printable.csv

ok得到了相似的KEY,之后我们猜测是 GoodLuckToYou

转换为16进制后调用脚本

# -*- coding: utf-8 -*-
import requests
import base64
import re
import string
import time
import sys
import base64

#!/usr/bin/env python2

txt = open("E:\\cipher", "rb").read()
key = "47 6F 6F 64 4C 75 63 6B 54 6F 59 6F 75".replace(" ", "").decode("hex")

def my_xor(cipher, key):
keylen = len(key)
res = ""

for pos, c in enumerate(cipher):
res += chr(ord(c) ^ ord(key[pos % keylen]))

return res

print my_xor(txt, key)

得到了文本,得到flag