HBCTF第四场WP
https://blog.ctftools.com/2017/05/post157
发表于2017年5月23日
Misc
叙利亚-最喜欢签到题啦
题作者:Dr3@m WriteUp作者:Dr3@m
原题:upsjrbhqaog{hegbn}
看到这种”{}”被放在奇怪的位置并且最后是”}”的,一定会有栅栏密码,放到工具解密即可,在ctftools.com提供了在线解密工具,解密得到如图:
在知道答题格式是hbctf{}的前提下,很容易知道还存在凯撒密码,将uopgs{jhrebghbqna}使用凯撒解密得到如图:
伊拉克-爱爱我
题作者:Dr3@m WriteUp作者:Dr3@m
右击查看源码即可看到
做啥题,先听听歌
看到其中go_on.html,打开这个页面,继续查看源码,再打开……直到看到
打开得到一张二维码,扫描得到:
504B0304140000080800D378B34A324B3611190000001C00000004000000666C61674B74F7CA4A718F3237F5C9F433354B84D049952E6981B6B600504B01023F00140000080800D378B34A324B3611190000001C000000040024000000000000002000000000000000666C61670A00200000000000010018001751F5746ED0D2015176F8616ED0D2017BF67C1D6BD0D201504B05060000000001000100560000003B0000000000
看到开头”504B0304″,知道是zip,把这段hex用winhex或者HxD保存为zip文件,解压即可得到文本:
aGJjdGZ75LiN56a75LiN5byDfQ==
base64解码即可
Crypto
阿富汗-wannacry3.0
题作者:逍遥自在 WriteUp作者:逍遥自在
原题下载:http://hbctf-1252906577.costj.myqcloud.com/crypto/giveyou.zip
本题中的 n1,n2 为 4096bit,这在理论上是不可能分解的,但是 RSA 有以下常见几种后门情况:1.加密指数过小 2.p、q
之间的差值太小。 3.pq 有一方的值太大或者太小 4.在有多个 N 的时候,他们某些 n 之间有相同的因数 等等就不列举了
可以看出 e=65537 ,所以 1 不可行,2,3 还是需要一定的计算量的,所以尝试 4,把 n1,n2 辗转相除求最大公约数,得到一个不是 1 的数,继而分解开 n1,n2。这里使用 java 中的BigInteger。里面直接含有 gcd()。
通过 rsatools 求出 d1,d2.
求出 key1,key2,一千万以上的第一个素数是 10000019,进而反推,可以得出 flag。
附上脚本(需要pycrypto):
Python
# -*- coding:utf8 -*-fromCrypto.CipherimportAESfromCrypto.CipherimportDESimportbase64n1=0xa0179efbcb5716782adc8a3d25d25cea916616d77961782512ba8587962e51f3d50fcfcbd659bff68361f19f167e1709bac576b906ca8da6485fddc03dfcd02206681a4c9591913bc6c1152a6b373aceee63c3ca9d69cf8d9858c36db3ee9d77b10141640c41def069d1658f1fb4a1bac8cdbaf22f86f30af514e1edc9cf64955cf050109833ac2f4e6e96e30462980e4a5741131323b514d8ad3c1f2e364797faf9ec76fa1f0ed1b4cb57fe0157006cfdf2dc32af209111dadec48c4d402edd74d206a3b6bb222046cb4c3c3dc2b4db40504e4e0ed06d8beba27d69e98824f6d2a2e597e6f4a2cd1e145b41bf9fc4cf5904c2883e0d42114f8b1e58a0c72c63ed0ad8037878caaeca74828937dc261780fd8b79160e8e04a9ad7fec508ccda0bf1f28f39602601a7a6211330b111086f40f6dcd10e3bdc90ade926fce5c38aae86353e828b057df6767ecd61809eafa0e7e826f811979292fbe361f37cd7080ab9e9f6eb54dbac264cbe7916dfce426ab875e2291e7062d54bb0659abb4c0314815bf3172546ebbbc8882a789422cd9c7e3a6bb3878e1024f4b1d98a2824abb30a29953df92b164f75a0b018d488bf22a6624dc418e5e83a7c9c3a7df1afaf8e706570ca0c3ad743b14f36bcc7d83621bfcdc045c10243144eeb4a0fc22c355294969b3a849dd2aa495efa0372bb0c7b701f9fca1a6d6b3fa7f3df7e19829a9n2=0x8176BECCE5A755AA0298F3F869533512478A13A41FD2040D6EFF5ED5A88242ED3BEA5B4ADAAF6D387683AAD94642FEB9C3C6B01E9AD5183B73B36E950EE8B9FB76974E1AC8A8266E377DBB714A0788FE94DB391A3B620D63F7B8826DC616E9B6B72E72AB5C1D8708159F8BD1B79B1688B5E789E28B25FE4B74E31029783B47CD291D64499D28BA8350CA0A101EF157E15BE47AD216BB57700D86F8DE0997A0FD79A6952C8E434B1961FA37DA728833707B97539DD38ACBE0790F7D547AF929788FA9EABBEDA44CFD44166883901C1F4649926AE4F2BE07E7701536A5D380D7C51C1B374F717857765DE78BBEA7C3F78451E0278C05581AA7AF075132B2D13E05B92975BAAB4D03D9B6079D38E95DCE55E24735366DD43AEB49F49231FCAC6BFDBE6D43A45A0B95F56135D7BA3531B93E4E5F384928A0D7CE68390F10DD58CE916B1D62776E9883CEAADF5025CA6F536A28CF9539B88C881B35106DCAD7D9556074B963A20BF8ACD47CD17E18E24D51688E16A9E40F0355FCD313667658245528074A4491137D890B754C0A7E8AF9FBC946E00D9F0D1E7708E2BA732FF6755872833CA78923B52D26EF82876A942FF83E3F431CB08E0FCB4C58057C96E3F6DCA0F3AAE7DCD06527625987391C83EDC511798C8D272E6BF13E3E3C019E39D11B315D762A07ECFE589FA72EEA4E7DC2C571F8BB2D5BC4B3B4BFBDAE287B95C2C64Bd1=0x23F98AE15C2D42C058295CEB26BFA1DF9832CFB935EE80381C804B974F5933534EB291E8654F9FC27E7D98F53DF1B1AD9F09D686F78EB6CC020180EC3D41BD6797F6F6C9F4E6543391933BF55F4876EF9F444DF00EF5830D7789A2C8D9212AC385C41974A90878579FFFCD099F7F50C48F7123AC5E9FBDA7DDB106A00FB48A0EC266C227287C9C19B94F429ADB1668C2F553AC2CE4252700FB3BDA81CB39A956EEB010C21FACB100D0D6CCFC2842EBB6924E6BCAFBED9E8BDB9A29A2B98D4DBAB810A62B4DD9B96E755A23D479B07241BEAF0D199F5C98F1534F1D4D9A8BDC7A9694C2712316202B65B1FF5BC3FADC181811E8C102E8A9CB080BE412D87649740407B16CC3AAAE73FAD374E0DDE6A5514BF13FCA691D9C7C34FA11153FB4B0A321472413EA3B39D4ECA2E5ACC52204A942D11F0D2B2FE196DE1C36299A41FE4181E748E9010C51178546D0E914F05077F3A2B1AC641427BB1242DDC18030E9AE888B9F6295BA612648C7B0864A5B504AA07DFF9C01324D302691D3B4D0387AE039C7A456F79E3748B7BA972F784BB10D737460F8B465F284264833E8B34ECA108F8106C7A009AA4F4BA7F2AD21D7670E2941FD50004B5D9361C0EC6629B9190059A274C53D741B8DAD4F68816733950B0C75F4BCD4958F8432A9DA763BCEA4A40B0B67438F1FEA1895CEF0373D08675C7A8DD58D7ED9D6B6C972B2BAE936121Dd2=0x6B7E3BD806CAD49ECF7F4DFAB1010C6CBC07925D50AA6101026B78C37021900E4814436EB87AB5F60EB92E4F2F3E8B1F94C5511068408CD9382D00A134FAD90948A3428F8C91C92EF4562A1F5B773C311D4994750A5F547CEF7F3C9486C8198FC33306B4EF4BF90526670D81B8B0459A8766D31ECDA8632725CB2E6D304E1044F1615D169E2DE607083A68F68FAA95EC210F69472CE6AA27F8A35BD9881F64E5716F7626C38C6E3B8A1566F0B2EE11BFD06E8A57DE003D5D8946EA2A0DDCF9A907A7EEA5D11FFD68C072D69E7E364B6561CAF78457649F4D73CBB94F2078B72F0B3231CF7D888D1E53C3E04D1220ED4FE967738E98155A3466686DEBE97B40C1F15C58C52244BE47C248E8FFC6E3B475E43F47AA30D73B0277ECD14267EC4E9018AAEFE5931665D916D04A932331D65FD395BEE8E3726837175AD09AD31FCC3330E9A58115B7A867524C90A84BAEA569F11DF05DF429DC91ABCA2BA9D17F16FC1CBD1F79B5D398B0A3D479C23F8B0ADB327F973F05AEC65031A9E20F62ACC9264CAF28135637070602279554E54423D6DDA442DC5DC40AC9688EF11CD55B0DF18AE489E5C94180980A80EF15A176ABC1A7730414446342BCF7210184D46C46B0A41FC705CBC5459BC8BE4E1128AA1FA392284CABDD4448E95CAA348BE41B9EC862068D0AE1F4837E2A2C3649E5DE276B6F1DF3F4C145A1A36B6DE96A64BC6FE1c1=open('RSA.encrypt1','rb').read()c2=open('RSA.encrypt2','rb').read()m1=pow(long(c1),d1,n1)m2=pow(long(c2),d2,n2)iv='10000019'key1=base64.b16decode(str(hex(m1))[2:-1].upper())key2=base64.b16decode(str(hex(m2))[2:-1].upper())obj1=AES.new(key1,AES.MODE_ECB)withopen('AES.encryt','rb')asf1:flag1=(str(obj1.decrypt(str(f1.read()))))obj2=DES.new(key2,DES.MODE_CBC,iv)withopen('DES.encryt','rb')asf2:flag2=(str(obj2.decrypt(str(f2.read()))))flag='hbctf{'+flag1+flag2+'}'printflag
WEB
巴基斯坦-520WEB
题作者:逍遥自在 WriteUp作者:逍遥自在
520web 实际上是非常简单的。只是一个模拟 URL 编码绕过的问题,由于出题人出题的不严谨,让一位大表哥玩出了代码执行(55555555)。
1. 先看源代码,有提示 alert(I_love_you!)
2. 就把 alert(I_love_you!)输入进去吧,发现过滤了括号
3. 过 滤 了 括 号 , url 编 码 中 就 是 %28%29 输 入alert%28I_love_you!%29(由于是面向新手的,担心他们不知道 16 进制,所以%40%41 也可以绕过,结果发现想多了,各位都是表哥表姐
Ps:这次 web 题的确没出好,只为新人了解 URL 编码。这题漏洞百出,而且 url 绕过也设计的不严密。源码都给大家,大家自己继续发掘其他姿势吧。比如|cat ls 后|catsuffer.py
源码下载:http://hbctf-1252906577.costj.myqcloud.com/src/520.tar.gz
Reverse
伊朗-520
题作者:Pcat WriteUp作者:Pcat
原题下载:http://hbctf-1252906577.costj.myqcloud.com/reverse/520.zip
这题先识别是什么语言制作的,使用 Exeinfo 显示为 C#
那么就用.Net Reflactor 等 C#逆向工具打开它,在 Form1 类中找到
其中 aGJjdGZ7 为 hbctf{的 base64 编码,中间则是字符串 s 的 32 位 md5 值,最后的 0x7d
为}Maybe God wants us to meet a few wrong people before meeting the right
one,so that when wefinally meet the person,we will know how to be
grateful.
这个字符串的 md5 值计算后为 1a117eef02eae51ca27c35d42b37defa
所以 flag 为 hbctf{1a117eef02eae51ca27c35d42b37defa}
土耳其-sayloveme
题作者:逍遥自在 WriteUp作者:逍遥自在
原题下载:http://hbctf-1252906577.costj.myqcloud.com/reverse/sayloveme.exe
直接拖 ida,f5 看源码,看左边函数栏发现一个 base64_encode 函数
然后点开 main 看到下面这些代码
第 105 行使用了 base64_encode()运算了 v3得到了 v21,在 107 行用 v21 与ZGVhcl9JX2RvX2xvdmVfeW91IQ==进行比较,相等就进去他下面的代码。直接外面讲base64 解码
将这个字符串输入进去得到
Ps:对不起各位了,出题人最近太忙了,本来上周五就该给大家的拖到了今天,对不起!
在博客中遇到的问题可以联系admin@ctftools.com
本文由Dr3@m原创发布,转载请注明来自HBCTF BLOG,转载代码(点击全选,请按"Ctrl"+"C"复制):
文章导航