Crypto
Xgm
xbk
xyf
加密结构使用的是Feistel结构
加密过程如下:
1 | 0,L,R |
那么逻辑就很清楚了
1 | test = "50543fc0bca1bb4f21300f0074990f846a8009febded0b2198324c1b31d2e2563c908dcabbc461f194e70527e03a807e9a478f9a56f7" |
然后解密脚本如下:
1 | #!/usr/bin/python |
xcaesar
1 | def caesar_encrypt(m,k): |
程序很明显,先将明文进行凯撒加密,随后对其进行base64编码,所以脚本如下:
1 | #!/usr/bin/python |
xbase64
1 | # /usr/bin/python |
乍一看,以为直接是,直接解码,发现是失败的,看看上面的base64_table,发现跟本来的不太一样,现在采取的策略是将原本的base64表与现在的base64表进行一个映射,然后就可以用base64进行解码了。脚本:
1 | #!/usr/bin/python |
Cry
rsa
rsappend
bbencode
下载下来是一个python文件:
1 | flag = open("flag", "r").read().strip() |
这个加密先将flag转成二进制,然后根据每一位二进制数,对a进行操作,也就是一直对其循环加密就能得到flag
(这里为什么我也没想明白)
1 | #coding=utf-8 |
Complicated Crypto
五层密码,好复杂
CRC爆破
下载下来是一个被加密的压缩包:Complicated Crypto.7z
由于7z的压缩包是无视伪加密的,但有没有密码的相关信息,使用winrar
打开可以看到有四个文件,其中有个名称叫做CRC Collision
,所以现在尝试进行CRC爆破
可以直接使用脚本进行攻击,6位爆破神器下载地址:
1 | python crc32.py reverse 0xA58A1926 |
或者使用这个:
1 | #crc32_util.py |
1 | from crc32_util import * |
连起来就是_CRC32_i5_n0t_s4f3
,这个就是压缩包的密码
vigenere
打开后里面,还有个压缩包,查看里面的tips.txt
文件,是个维吉尼亚密码
但是密钥数量太多,现在上解密模板网站上找到相应解密模板
1 | # -*- coding: utf-8 -*- |
1 | # -*- coding: utf-8 -*- |
1 | $ python vigenereDictionaryHacker.py |
然后在线解密:
1 | the vigenere cipher is a method of encrypting alphabetic text by using a series of different caesar ciphers based on the letters of a keyword it is a simple form of polyalphabetic substitution so password is vigenere cipher funny |
vigenere cipher funny
就是密码
sha1
爆破
然后解压:
1 | 恭喜! |
使用模板进行sha1
爆破,下面是个demo程序:
1 | #break_sha1.py |
得到的结果是:
1 | Breaking,please wait! |
MD5
将easy SHA1解压之后
1 | Hello World ;-) |
看到这段文字,说另一个程序输出是什么,不知道思路,网上查查,找到一篇这样的blog
将其中两个程序下载运行:
1 | #第一个输出 |
所以这里的密码应该是Goodbye World :-(
RSA
解压后,最后是一个RSA加密:
使用openssl
查看公钥文件:
1 | RSA Public-Key: (1026 bit) |
看的出来,这里需要维纳攻击:
使用rsa-wiener-attack工具求出d,
1 | if __name__ == "__main__": |
得到d = 8264667972294275017293339772371783322168822149471976834221082393409363691895
下面就可以直接写解密脚本了:
1 | #coding=utf-8 |
DSA
关于DSA
之前也没怎么接触过,现在遇到,就顺便总结一下
知识点
概述
- 是Schnorr和ElGamal签名算法的变种,被美国NIST作为数字签名标准
- 它是另一种公开密钥算法,它不能用作加密,只用作数字签名。
- DSA使用公开密钥,为接受者验证数据的完整性和数据发送者的身份。它也可用于由第三方去确定签名和所签数据的真实性。DSA算法的安全性基于解离散对数的困难性,这类签字标准具有较大的兼容性和适用性,成为网络安全体系的基本构件之一。
其他知识点
解题
DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥x,你也能确认它们是否是随机产生的,还是作了手脚。
可以使用openssl方便地进行dsa签名和验证。
签名与验证:
1
2
3
4 > openssl dgst -sha1 -sign dsa_private.pem -out sign.bin message.txt
> openssl sha1 -verify dsa_public.pem -signature sign.bin message.txt
>
>
>
本题的攻击方法曾被用于PS3的破解,答案格式:CTF{x}(x为私钥,请提交十进制格式)
下载文件解压,发现里面有着四个packet
以及一个公钥
使用上述命令可以验证通过。
其中的message
文件可以查看,可以找到一些信息:
1 | #message1 |
查了一下asn1的知识,发现openssl
中就存在着asn1parse转码操作,所以以此查看sign.bin中的信息
1 | openssl asn1parse [-inform PEM|DER] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i] [- structure filename] [-strparse offset] |
1 | openssl asn1parse -inform der -in packet1/sign1.bin |
由于对多条消息进行数字签名时,k是不变的,所以:
由(1)*s2
、(2)*s1
得:
最终可以解得:
而上面的分析可以发现,只有packet3和packet4的r是相同的,所以脚本如下:
1 | from Crypto.PublicKey import DSA |
所以CTF{520793588153805320783422521615148687785086070744}
vigenere
这题要使用kriski测试法,太麻烦了,直接上大佬程序
1 | #!usr/env/python |
superexpress
下载下来两个文件:
1 | #problem.py |
由于最后的结果会模上251,所以key的所有字母的ASCII一定在251以内且长度为偶数,脚本如下:
1 | #!usr/env/python3 |
好多盐
某遗留系统采用固定格式+6-10位数字类型密码,今天他们发生了数据泄露事件,已知固定格式为{FLAG:},做为一名黑客,你要开始干活了。字符串长度为10位
题目给了很多hash过的文件,以及盐,关于这方面的概念可以自行百度md5
与盐的相关知识,直接爆破就行:
1 | #!usr/env/python3 |
影之密码
请分析下列密文进行解密 8842101220480224404014224202480122 得到flag,flag为8位大写字母
分析:
flag
是8位大写字母- 有7个0,正好分成8段
- 每段中仅有1,2,4,8,全是2的幂数
- 查询有关2^n的加密方式,二进制幂数加密法
- 这里与实际上的二进制幂数加密还是稍微有些区别,8 -– 3 但是这里直接给出,最后解密的结果其实就是将其相加,转成ASCII
解密:
1 | #!usr/env/python3 |
Jarvis’s encryption system
Let’s play with Jarvis’s new encryption box.
nc pwn.jarvisoj.com 9880
下载下来有两个附件:一个是crypto500.py,一个有关加密过程的图片(就不放上来了)
1 | #!/usr/bin/env python |
使用上述nc命令进行访问,键入e值,会返回d值。
先把图片中的信息提取出来(用winhex查看末尾就行)
通过已知的明文、密文对e进行爆破
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#usr/env/python3
#coding=utf-8
#owner: IFpop
#time: 2019/11/5
import gmpy2
from Crypto.Util import number
n = 808637320166213096433765975908829772554859069394497436792703828416763985949910999652518305818627321094257781267795371106923808192073932662313603219525599014635435542122940843344921727149256852355110338886574805360544004118210641173633231100848831019159519744863314748281129830905559513810272933968408858616937223539622595750248885831720830102914499513408356858587797522763592193335162884129664298938995394243273615798207065590802899685489088903478734288977143851327400816886878238915788561611104380001569848016035186213716602462262685777960742683591155978590371074585063550419528377002596163321548052257322263024813745933243795081592986850478573362522245788630785664119935566422559659277401321793012274415007906726880710258434953224297253000176721652344571059040066987969691706315602374506498087282531643212970147526356421919309049062439117990930204486012562031589114880474346559407445496718773030816258262150397230280669274725009415653773469037623986165899557423095323109994543129373149980880777219450714265152054529287453826506032747047856303879606356141420416161004589629524370677871918513405209191951229311529443558187652701599377904802383252318582028816524498306240682160249309341335405511246150908708558397938689907425750101507
m1 = 89372489723987498237894327984372
c1 = 792279062886162218096642776664224514933347584486280723004734021586336212749049858600481963227286459323970478541843083793725468708921717787221937249530784012084036132167698694870670989692185525559265359595824727956010042190235432643115112280623082788133230708728369892499755238276075667536752879449115011933006031581738186877618805996280847737363426887886868682686959858371130406926178828888575004380515988821399247906070333132810952695798429265793849588130806947806841034544612000197604854503195512120025729616966658790540157838337703936086683817085220432748606686965902101050255048796382841321391071407100767404596588780879740560771450534303617347553555472893929700798373187625224545676303975128589469709553887522697982505366205159178754377849727155295773459020853899833570753142832536760229326028534739725856990225488803963836214548294423502322319111713836053680359093114158912017408230992904911531693795674356749450578360594750306010644345865018135713049088702085668117922755659876667178408188245170381487842104129405699987082399408416605832498886309106565903612880735897179022046135207448286905927468981921408174446350113407999312543013150441972687118445672308468055301677455644948365453703227341347327118261153884632046860369729
e = 1
while(1):
print(e)
c = pow(m1,e,n)
if c == c1:
#7845741 跑了很久,希望之后能找到更快的方法
print("done!")
print(e)
break
e = e + 1利用
nc
访问链接,得到d解密就行:
1
2
3
4
5
6
7
8
9
10
11
12
13
14#usr/env/python3
#coding=utf-8
#owner: IFpop
#time: 2019/11/5
import gmpy2
from Crypto.Util import number
d = 624460328909915360701402168639641282028094468418961878947574807290638891758678991143435088653980701535371225162050430031333639072505365342535152293096454464491608234713910040741806054032872119204341656042243036836513731486079394171780995659012791615808025872985542653518800484827924355387767430294123689221121329057758535673622344148467540232245253256875196052350040448617224502051601181938246394036842235391465615724331125440683500889291172253639404968619326290436776700446299000007994603663440301337649478949521483497552296109838827309290662620012954396232530653067994746179325738761837228276717554780296018709380622306541045859622715377902354561164951333797443088787938481179135106105790091663516291819506679417163921126064227724274720567814644923715786512409941352289194976639518315198223889636540907899742620702027181209723760906029440110133038012652837512150214031930229627563605747245442722777826347211476418833664939434587222857079580932195626606642019627685477852118740507133047312988551945249158637120933025247874896831420739652406553559282198158772718455703088272187706565621125165787151495212884395636011063049499722644316616892917352706474956487897928799493388647214180485284836266930315584778253034297866155428036121429
n = 808637320166213096433765975908829772554859069394497436792703828416763985949910999652518305818627321094257781267795371106923808192073932662313603219525599014635435542122940843344921727149256852355110338886574805360544004118210641173633231100848831019159519744863314748281129830905559513810272933968408858616937223539622595750248885831720830102914499513408356858587797522763592193335162884129664298938995394243273615798207065590802899685489088903478734288977143851327400816886878238915788561611104380001569848016035186213716602462262685777960742683591155978590371074585063550419528377002596163321548052257322263024813745933243795081592986850478573362522245788630785664119935566422559659277401321793012274415007906726880710258434953224297253000176721652344571059040066987969691706315602374506498087282531643212970147526356421919309049062439117990930204486012562031589114880474346559407445496718773030816258262150397230280669274725009415653773469037623986165899557423095323109994543129373149980880777219450714265152054529287453826506032747047856303879606356141420416161004589629524370677871918513405209191951229311529443558187652701599377904802383252318582028816524498306240682160249309341335405511246150908708558397938689907425750101507
c = 738822002752800877524466308025949155169562722946933006009883884249589602039677687891359871510923927357766748131398443497541198900771818831638644263405425815579383553019562159083788644122365536627592737115316351290153544908592280731090451811311680698586032725090719266003369555867584457372823678746133588560994163232730766388456903527206840527304843529539480355012405496730615078972755415860013097394363116913629756292725693596880188792245847698225435105827398989245800248197290718407831242734331874121327502564673597694670795036098967372950089253263743880807024448724715652660602771818683520844873803372738417012436219777372987997036211306992938395670636075660990930360358970016244484405618827909229400111542660072678812089441010001235353317911131109787281238112284352067511452432985149442969693926797740772628154057474332702139775407456229918917403138849681496015981718513476254353617586634306067889050783266988506871489696817574207289110594169371818597141857443042841485880477066344316648550850088971005108756497748568090122624591451915965314486079436499049418137147522360690326710468200339550170216543240318289067712843687012174036874897324652429812609807952220427326987655148639613323665786093803557065570465270944069296977739085
m = pow(c,d,n)
print(number.long_to_bytes(m))
#USTCTF{U_r_real33y_m4st3r_0f_math}
神秘压缩包
就不告诉你密码,看你怎么办。
下载下来一个rar压缩包,一般rar是不会存在伪加密的(至少目前没有遇到过),尝试爆破,发现时间太长,不太行。
剩下就是尝试一个crc32爆破了(方法同Complicated Crypto),这里尝试5位
1 | from crc32_util import * |
得到结果:
1 | verification checksum: 0x20ae9f17 (OK) |
所以密码为:password:f~Z-;lapEwF\<0ZkhyAo5
得到XUSTCTF{6ebd0342caa3cf39981b98ee24a1f0ac}
简单ECC
已知椭圆曲线加密Ep(a,b)参数为
p = 15424654874903
a = 16546484
b = 4548674875
G(6478678675,5636379357093)
私钥为
k = 546768
求公钥K(x,y)
提示:K=kG
提交格式XUSTCTF{x+y}(注意,大括号里面是x和y加起来求和,不是用加号连接)
1 | #!usr/env/python3 |
God Like RSA
Extremely hard RSA
very hard RSA
hard RSA
BrokenPic
下载下来是一个bmp文件,文件损坏不能打开,使用winhex打开,发现没有bmp文件头,填入文件头重新填入:
1 | 42 4D 38 0C 30 00 00 00 00 00 36 00 00 00 28 00 00 00 56 05 00 00 00 03 00 00 01 00 18 00 00 00 00 00 02 0C 30 00 12 0B 00 00 12 0B 00 00 00 00 00 00 00 00 00 00 |
这里补充一下有关bmp头格式:
1 | //存储方式为小端序 |
形成新的bmp后,得到里面得内容:
key:PHRACK-BROKENPIC
和一个不能扫出东西的二维码
现在问题来了,这个key是用来干嘛的,再看看bmp的16进制格式:
1 | D55F7AB07937BA26B22468328A68C1F2 |
想到(这个我还真没想到)AES是分组加密,16字节一组,不过目前所学有key的密码貌似也不是很多
尝试AES解密:
1 | #usr/env/python3 |
然后也是想之前那样,修复bmp,可以扫码得到flag:PCTF{AES_i5_W3ak_foR_im4ge}
Medium RSA
Basic
握手包
给你握手包,flag是Flag_is_here这个AP的密码,自己看着办吧。
下载下来一个cap文件,使用wireshark打开后发现,文件应该使加密过的,网上查一下关于cap的破解知识,发现Kali有个自带工具aircrack-ng,进行字典破解(我这里使用的使kali /usr/share/wordlists
目录下的rockyou.txt
)
1 | aircrack-ng wifi.cap -w rockyou.txt |
flag{11223344}
德军的密码
已知将一个flag以一种加密形式为使用密钥进行加密,使用密钥WELCOMETOCFF加密后密文为 000000000000000000000000000000000000000000000000000101110000110001000000101000000001 请分析出flag。Flag为12位大写字母
01串的长度为84,题目提示说使12为大写字母,所以将字符串分成12份,每份应该占有7个01串,此时的key正好也右12为,那么无非就是加减乘除异或等运算,尝试发现此时是逐位异或。
1 | #!usr/enc/python3 |
-.-字符串
请选手观察以下密文并转换成flag形式
..-. .-.. .- -–. ….. ..—— ..—— -–—— .-–-– ——.. -.. -…. -…. ….. ..…-– ——.. -–..… -.. .-–-– -.. .- -–-–. ..…-– .-–-– ——.. .-–-– ..—— -… -–… -–… -–… -…. …-– ..….- .-–-– -–——
flag形式为32位大写md5
这看起来像是莫斯电码,尝试解码:
1 | flag522018d665387d1da931812b77763410 |
提示说32位大写的md5,去掉flag就是答案。
A Piece Of Cake
nit yqmg mqrqn bxw mtjtm nq rqni fiklvbxu mqrqnl xwg dvmnzxu lqjnyxmt xatwnl, rzn nit uxnntm xmt zlzxuuk mtjtmmtg nq xl rqnl. nitmt vl wq bqwltwlzl qw yivbi exbivwtl pzxuvjk xl mqrqnl rzn nitmt vl atwtmxu xamttetwn xeqwa tsftmnl, xwg nit fzruvb, nixn mqrqnl ntwg nq gq lqet qm xuu qj nit jquuqyvwa: xbbtfn tutbnmqwvb fmqamxeevwa, fmqbtll gxnx qm fiklvbxu ftmbtfnvqwl tutbnmqwvbxuuk, qftmxnt xznqwqeqzluk nq lqet gtamtt, eqdt xmqzwg, qftmxnt fiklvbxu fxmnl qj vnltuj qm fiklvbxu fmqbtlltl, ltwlt xwg exwvfzuxnt nitvm twdvmqwetwn, xwg tsivrvn vwntuuvatwn rtixdvqm - tlftbvxuuk rtixdvqm yivbi evevbl izexwl qm qnitm xwvexul. juxa vl lzrlnvnzntfxllvldtmktxlkkqzaqnvn. buqltuk mtuxntg nq nit bqwbtfn qj x mqrqn vl nit jvtug qj lkwnitnvb rvquqak, yivbi lnzgvtl twnvnvtl yiqlt wxnzmt vl eqmt bqefxmxrut nq rtvwal nixw nq exbivwtl.
这么多字符串一般来说就是替换密码了,先试试比较简单的单表替换密码,解密
1 | the word ro?ot can refer to ?oth physical ro?ots and virtual software agents, ?ut the latter are usually referred to as ?ots. there is no consensus on which machines ?ualify as ro?ots ?ut there is general agreement among e?perts, and the pu?lic, that ro?ots tend to do some or all of the following: accept electronic programming, process data or physical perceptions electronically, operate autonomously to some degree, move around, operate physical parts of itself or physical processes, sense and manipulate their environment, and e?hi?it intelligent ?ehavior - especially ?ehavior which mimics humans or other animals. flag is su?stitutepassisveryeasyyougotit. closely related to the concept of a ro?ot is the field of synthetic ?iology, which studies entities whose nature is more compara?le to ?eings than to machines. |
我们很容易可以分析出,r -– b,所以最终的flag:PCTF{substitutepassisveryeasyyougotit}
Shellcode
作为一个黑客,怎么能不会使用shellcode?
这里给你一段shellcode,你能正确使用并最后得到flag吗?
关于shellcode,他是利用漏洞执行代码从而获取shellcode一类程序,它实际就是汇编对应的机器码,但由于机器码大多是不可见字符,所以无法直接显示。
开始以为这个是通过base64加密不可见字符得到的,但发现不能解密,百度发现存在着其他的转码方式链接
使用工具
1 | .\shellcodeexec.x32.exe PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIYIhkmKzyCDq4l4FQyBlrRWEahI1tLKT16Pnk1ftLnkPvwlnkW6fhNkan5pNkgF6XPOR8T5HsCivaN19okQSPlKRLvD6DNk3uelNkpTthRXuQ9znk2jEHLK1Ja0FaXkhcTtBink4tlKUQhnvQYotqo0ylnLMTO0SDEWZahOtMwqhG8kXteksLwTdh1e8aLKsja4uQ8kavLKdLrklK0ZeL7qjKLKUTLKuQM8k9bdvDeL1qiSnR5XVIXTOyjENikrphNnrnVnhlBrzHooKOYoyok93u7tOKCNyHzBBSnguLgTcbyxlNKOYoYoMYaUTHphRL2LupQQ0htsFRTn541x3E2Se5T26PyKK8QLTddJlIZFBvyoSeUTLIkrv0oKy8ORpMmlk7Gl6DBrm8SoyoioyoaxrOqh0XwP1xu1Qw1upBbHrmrED3T34qiKOxQLTdEZOyZCaxQmRxgPUp0hpnPn4srRe8BDSo2PT7axqOCWROpophSYpnSo04u83K72Peu70hBpCsqDpF4qHIMXpLQ429k98aEaJr1BF3Ca3bIozp01IPf0Yof5GxAA |
弹窗出flag:PCTF{Begin_4_good_pwnn3r}
Help!!
出题人硬盘上找到一个神秘的压缩包,里面有个word文档,可是好像加密了呢~让我们一起分析一下吧!
下载一个压缩包,说是加密了,其实是个伪加密,winhex改一下,得到一张图片
开始以为是图片隐写,发现没有藏信息在16进制之中,而且不是LSB隐写,
后来想到word.docx中会不会还有东西,使用binwalk
分解一下,发现在/word/media中存在着另一张图片,得到flag
Baby’s Crack
既然是逆向题,我废话就不多说了,自己看着办吧。
下载下来有两个文件,一个exe程序,一个flag.enc程序,题目说是逆向题,所以还是直接使用ida打开看看
查看main函数
1 | _main(*(_QWORD *)&argc, argv, envp); |
下面是解题程序:
1 | #!usr/env/python3 |
熟悉的声音
两种不同的元素,如果是声音的话,听起来是不是很熟悉呢,据说前不久神盾局某位特工领便当了大家都很惋惜哦
XYYY YXXX XYXX XXY XYY X XYY YX YYXX
请提交PCTF{你的答案}
特工,声音,密码,这不就是摩斯电码嘛,现在就是需要知道X,Y分别代表什么
1 | #!usr/env/python3 |
发现这也不是个有意义的字符,可能是flag,交上去发现不对,可能还有加密,尝试常用的一些解密方式
凯撒解密,发现这样一个字符串phrackctf
,交上去发现不对,查询才知道,摩斯电码只能是大写
PCTF{PHRACKCTF}
取证
有一款取证神器如下图所示,可以从内存dump里分析出TureCrypt的密钥,你能找出这款软件的名字吗?名称请全部小写。
提交格式:PCTF{软件名字}
搜索内存取证神器,发现一篇博客,flag:PCTF{volatility}
ROPGadget
都说学好汇编是学习PWN的基础,以下有一段ROPGadget的汇编指令序列,请提交其十六进制机器码(大写,不要有空格)
XCHG EAX,ESP
RET
MOV ECX,[EAX]
MOV [EDX],ECX
POP EBX
RET
提交格式:PCTF{你的答案}
说是要将上述汇编指令转换为机器码,好多种方法,这里我使用一个转换工具,得到94C38B08890A5BC3
所以PCTF{94C38B08890A5BC3}
Easy RSA
还记得veryeasy RSA吗?是不是不难?那继续来看看这题吧,这题也不难。
已知一段RSA加密的信息为:0xdc2eeeb2782c且已知加密所用的公钥:
(N=322831561921859 e = 23)
请解密出明文,提交时请将数字转化为ascii码提交
比如你解出的明文是0x6162,那么请提交字符串ab
提交格式:PCTF{明文字符串}
尝试将模数N进行分解
得到
p = 13574881 q = 23781539
下面就可以开始解密
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#!usr/env/python3
#coding=utf-8
#owner: IFpop
#time: 2019/11/13
import gmpy2
from Crypto.Util import number
p = 13574881
q = 23781539
n = p*q
e = 23
c = 0xdc2eeeb2782c
fn = (p-1)*(q-1)
d = gmpy2.invert(e,fn)
m = pow(c,d,n)
print(number.long_to_bytes(m))
#3a5Y所以
PCTF{3a5Y}
爱吃培根的出题人
听说你也喜欢吃培根?那我们一起来欣赏一段培根的介绍吧:
bacoN is one of aMerICa’S sWEethEartS. it’s A dARlinG, SuCCulEnt fOoD tHAt PaIRs FlawLE
什么,不知道要干什么?上面这段巨丑无比的文字,为什么会有大小写呢?你能发现其中的玄机吗?
提交格式:PCTF{你发现的玄机}
提示很明显是培根密码,但我们知道培根密码是由A,B两个字符组成的特殊隐写方式,题目中说大小写?玄机?
大小写与A,B对应,这样就可以算是培根了,但具体是大写与A还是小写与A还得测试一下
1 | #coding=utf-8 |
所以最后应该是PCTF{baconisnotfood}
Secret
传说中的签到题
题目入口:http://web.jarvisoj.com:32776/
Hint1: 提交格式PCTF{你发现的秘密}
页面没有信息,那就只有消息头会藏信息了,查看消息头,发现Welcome_to_phrackCTF_2016
Easy Crackme
都说逆向挺难的,但是这题挺容易的,反正我不会,大家来挑战一下吧~~:)
使用ida64打开, 找到main函数
1 | int __cdecl main(int argc, const char **argv, const char **envp) |
逻辑还是比较清楚的,现在就直接写脚本:
1 | #coding=utf-8 |
公倍数
请计算1000000000以内3或5的倍数之和。
如:10以内这样的数有3,5,6,9,和是23
请提交PCTF{你的答案}
直接爆破,就行~
1 | #coding=utf-8 |
神秘的文件
出题人太懒,还是就丢了个文件就走了,你能发现里面的秘密吗?
下载一个文件,将其file一下
1 | Linux rev 1.0 ext2 filesystem data, UUID=8eecd08f-bae8-41ff-8497-8338f58ad15b |
是linux的磁盘文件,使用binwalk 查看文件,看是否可以分离,随后就产生了256个文件,使用winhex打开查看,每个文件中仅有一个字符,所以256个文件连起来应该是我们需要的信息,下面写个脚本处理一下
1 | #!usr/env/python |
得到:
1 | Haha ext2 file system is easy, and I know you can easily decompress of it and find the content in it.But the content is spilted in pieces can you make the pieces together. Now this is the flag PCTF{P13c3_7oghter_i7}. The rest is up to you. Cheer up, boy |
veryeasyRSA
已知RSA公钥生成参数:
p = 3487583947589437589237958723892346254777 q = 8767867843568934765983476584376578389
e = 65537
求d =
请提交PCTF{d}
直接解就行:
1 | #coding=utf-8 |
美丽的实验室logo
出题人丢下个logo就走了,大家自己看着办吧
下载下来一个jpg,使用binwalk啥的也没有发现藏有神秘东西,可能是LSB,使用stegsolve打开,
使用Frame browser拿到flag
手贱
某天A君的网站被日,管理员密码被改,死活登不上,去数据库一看,啥,这密码md5不是和原来一样吗?为啥登不上咧?
d78b6f302l25cdc811adfe8d4e7c9fd34
请提交PCTF{原来的管理员密码}
看了半天,不知道问题在哪。。后来才知道这里的md5的长度是33位,有一位是多出来的,遍历一下,逐个解就行
段子
程序猿圈子里有个非常著名的段子:
手持两把锟斤拷,口中疾呼烫烫烫。
请提交其中“锟斤拷”的十六进制编码。(大写)
FLAG: PCTF{你的答案}
用python转一下就行,
1 | s='锟斤拷'.decode('utf-8').encode('gbk').encode('hex') |
veryeasy
使用基本命令获取flag
strings一下即可得到flag
关于USS lab
USS的英文全称是什么,请全部小写并使用下划线连接_,并在外面加上PCTF{}之后提交
百度一下即可,PCTF{ubiquitous_system_security}
base64?
GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXGM3TINLGGY4DGNBXGYZTGNLGGY3DGNBWMU3WI===
特征很明显是base32,解密:504354467b4a7573745f743373745f683476335f66346e7d
好像是16进制,转一下:PCTF{Just_t3st_h4v3_f4n}