写的不好,排版也差,还请见谅!
第一次打真正意义上的CTF比赛
之前有名必报,之后发现只会做签到
祥云杯也就康康就走了
这几天看了知乎的大佬,只学了3个月都能拿30名,而我只能拿75感觉有点捞
所以我就把我能做起的WP给大家分享一下
MISC
1.png:
对于图片题,最简单的要有几种思想:1.属性,2.winhex头尾,3.图片高度,4.stegsolve,5.foremost,6.LSB隐写。 这道题后用winhex打开后,发现文件尾有base64编码:M2I3OWJkZjhmY2ZkNTVmZH0= 解码得到:3b79bdf8fcfd55fd},所以还有一半,修改图片高度后,得到
2.不说人话:
打开后
如果做过攻防的misc很容易想到Ook!编码
解码地址:https://www.splitbrain.org/services/ook
得到HECTF{TH1s_1s_crypt0_914nda0}
3、4没什么说的,签到类型。
打开网站,F12发现手机号 15970773575 点击忘记密码后,输入手机号 15970773575
打开burp,因为是4位验证码,所以在验证码那里进行爆破,设置数值0000-9999,爆破线程数我填的200,不到10s就跑出来密码是233
容易看出,第一部分传入param1和2不相等但是MD5相等,可以直接绕过使得MD5值为NULL:param1[]=1¶m2[]=2
第二部分,string_1要以数字开头,并且str1和str2要相等,构造str1=2120624&str2=240610708。
最后得到payload:121.196.32.184:8081/?param1[]=1¶m2[]=2&str1=2120624&str2=240610708 得到flag:hectf{b0c65ccf32a96a1f8dc3326f16ed4498}
获取get传入的url参数 ——>
判断是否为空(不为空进入下一步)——>进入safe_request_url()——>调用check_inner_ip()处理url参数(判断是不是内网ip)——>
curl获得的$url
所以可以构造payload:http://114.55.165.246:12003/?url=http://0.0.0.0/flag.php/
得到flag{04f3eaef-ec7c-4a44-8b54-062cd19295f3}
PWN
误打误撞做起的PWN,所以并没有准确的思路,这里就不发了。
CRYPTO
这次的密码学还是有点难度
1.rsa
基础rsa题目
n =
11419768903339716189261532371559705252086398275876008505047375123074727093589680611869748263351554093957968142343831331654606932684767042958427409579115435445187908134556329979271179879129295667476493886787230948520371350715808988496083694717544298343260369816980228394498856751096191942011545898984240281874509791880690092840536597771674772617299407710771426964764347566008897012753022763270832647775571317162594044338095870404550665457899223394942640876850692848671826594750236910363027949459768124646230555766323417693441861436560072288812137944884954974348317322412816157152702695143094487806945533233359294549423
e = 65537
c =
575061710950381118206735073806398116370706587076775765253483131078316908073202143802386128272374323616239083134747318254436706806781744501903333604772961927966747648954315962269321297121495398057938617145017999482722197661065698707836824505023856306403892307944203245563411961302499347604417024064678999003637933185177922884103362203639349298263339808508185861692596967147081382566246627668898774233029198694500565511361867375668367875805985660705137109665107860799277624050210666866958502948062330037309873148963011192405012811945540153592090345668265964477204465327474208098404082920129178960510763496025906621820
其中,利用factor对大整数进行分解,得到p和q在线大整数分解网站:
在线分解大整数
直接上python:
import gmpy2 def Decrypt(c,e,p,q):
L=(p-1)(q-1)
d=gmpy2.invert(e,L)
n=pq
m=gmpy2.powmod(c,d,n)
flag=str(m)
print(“flag{”+flag+"}")
if name == ‘main’:
q = 2499568793
p = 4568695582742345507136251229217400959960856046691733722988345503429689799935696593516299458516865110324638359470761456115925725067558499862591063153473862179550706262380644940013531317571260647226561004191266100720745936563550699000939117068559232225644277283541933064331891245169739139886735615435506152070330233107807124410892978280063993668726927377177983100529270996547002022341628251905780873531481682713820809147098305289391835297208890779643623465917824350382592808578978330348769060448006691307027594085634520759293965723855183484366752511654099121387261343686017189426761536281948007104498017003911
e = 65537
c = 575061710950381118206735073806398116370706587076775765253483131078316908073202143802386128272374323616239083134747318254436706806781744501903333604772961927966747648954315962269321297121495398057938617145017999482722197661065698707836824505023856306403892307944203245563411961302499347604417024064678999003637933185177922884103362203639349298263339808508185861692596967147081382566246627668898774233029198694500565511361867375668367875805985660705137109665107860799277624050210666866958502948062330037309873148963011192405012811945540153592090345668265964477204465327474208098404082920129178960510763496025906621820
Decrypt(c,e,p,q)
2.在这里签到
打开之后,得到
U2FsdGVkX18DxoLgtTzVee++9JZw790ngjGfxdjjjeWt9m9jL2O3NJuKB//4O3BHTnelg2z+o2vE0AxVKPobIFVgKxqbpkr94XYPNZFbbFykHWBMArdVT8FuH7dyvHDrLe7D35p654UEy2Yn0FepbJ7BHcn9Gu9xg7eqVcovB6KfMivcXw49JyZWbWtb0SZKpA0hRgI2tNeQ8lsRZRkoaI9CECyphItxLd0bO58phQjv70M/e30tsFpEmPo=
如果不会的,先进行base64.可以得到开头是salted,用搜索引擎可以查到这种类型是:AES DES RC4 Rabbit
TripleDes,这个是Rabbit,转后得到
R1E0RElOSlVHTTJUSU5CV0c1QkRHTkJUR01aVFFOUlRHWTJER05SVEdVWlRJTlJVR1laVEdPQlRHVTNES05SVkdZWlRHTkpUR0kzREdOUlZHWTJETU1KV0dJWlRJTVpaR1kyREdNWldHUVpURU5SV0dNM1RNTkpXR0UzVUk9PT0=
直接base64得到GQ4DINJUGM2TINBWG5BDGNBTGMZTQNRTGY2DGNRTGUZTINRUGYZTGOBTGU3DKNRVGYZTGNJTGI3DGNRVGY2DMMJWGIZTIMZZGY2DGMZWGQZTENRWGM3TMNJWGE3UI===
由于全是大写,易猜到是base32,解码得48454354467B34333863643635346463383565656335326365646162343964336432663765617D
猜测是可以直接转字符串,所以直接16进制转字符串,得到HECTF{438cd654dc85eec52cedab49d3d2f7ea}
3.no blank space
题目:.-.------.-…-.-----…-…----.-.–…-…-…–.-…-…-…–.-.-…–.----…–…-…-…-…-.-.—.-…-…----.
老实说,这道题一开始没做起,后来有了提示:古老的5bit编码,知道了是博多码,博多码
将.换成1,-换成0,对照着表解密即可,得到flag:HECTF{TH1S1SNTM0RS3}
其实还有一道溯源也是会的,但是因为公司找错了(此人有两个公司貌似)
还是讲解一下:
1.域名查邮箱
查询网站1:1.whois 2. 138查询网
两个网站都能显示出详细信息。
2、3.查名字第一位最后一位:打开支付宝,点击转账,输入手机号,打开转账页面即可找到最后一个字,验证姓名即可得到第一个字。
4.我是直接搜的手机号得到的地址(15365172226)
官方给的答案是:打开微信——添加朋友——企业微信联系人————点击添加到通讯录——返回
即可显示“九如城”
—————————————————————————————————————————————————————————
总之这次的HECTF挺不错的,脑洞也挺大,很期待下一次的比赛!