题目:CTF的起源
出自:第九届山东省大学生网络安全技能大赛
本题要点:base64隐写
关于base64隐写:https://www.jianshu.com/p/48fe4dd3e5ce
Q1RGIChDYXB0dXJlIFRoZSBGbGFnKSBpcyBvcmlnaW5hdGVkIG== aW4gdGhlIDE5OTYgREVGQ09OIEdsb2JhbCBIYWNraW5nIENvbmZlcmVuY2UsIG== YSBjb21wZXRpdGl2ZSBnYW1lIGFtb25nIGN5YmVyc2VjdXJpdHkgZW50aHVzaWFzdHMu VGhlIENURiBjb21wZXRpdGlvbiBjb3ZlcnMgYSB3aWRl cmFuZ2Ugb2YgZmllbGRzIGFuZCBoYXMgYSB= Y29tcGxleCBjb250ZW50LiBBdCB0aGUgc2FtZSB0aW1lLCC= dGhlIGRldmVsb3BtZW50IG9mIHNlY3VyaXR5IHRlY2hub2xvZ3kg aXMgZ2V0dGluZyBmYXN0ZXIgYW5kIGZhc3Rlciwg YW5kIHRoZSBkaWZmaWN1bHR5IG9mIENURiBpcyBnZXR0aW5nIGhpZ2hlciBhbmQgaGlnaGVyLCD= dGhlIHRocmVzaG9sZCBmb3IgYmVnaW5uZXJzIGlzIGdldHRpbmcg aGlnaGVyIGFuZCBoaWdoZXIuIB== TW9zdCBvZiB0aGUgb25saW5lIGluZm9ybWF0aW9uIGlzIHNjYXR0ZXJlZCBhbmQgdHJpdmlhbC4g QmVnaW5uZXJzIG9mdGVuIGRvbid0IGtub3cgaG93IHRvIHN5c3RlbWF0aWNhbGx5II== bGVhcm4gdGhlIGtub3dsZWRnZSBvZiBDVEYgcmVsYXRlZCBmaWVsZHMsIF== b2Z0ZW6gdGFraW5nIGEgbG90IG9mIHRpbWUgYW5kIHN1ZmZlcmluZy6= SW4gb3JkZXIgdG8gbWFrZSB0aGUgQ1RGIHBsYXllcnMg bGlmZSBvZiBlbnRlcmluZyB0aGlzIGZpZWxkIGVhc2llciwg aW4gT2N0b2JlciHyMDE2LCBDVEYgV2lraSBoYWQgdGhlIGZpcnN0IGNvbW1pdCBvbiBHaXRodWIuIH== QXMgY29udGVudCBjb250aW51ZXMgdG8gaW1wcm92ZSwg dGhlIENURiBXaWtpIGhhcyBiZWVuIGxvdmVkIGJ5IG1vcmUgYW5kIG1vcmUgc2VjdXJpdHkgZW50aHVzaWFzdHMsIH== YW5kIHRoZXJlIGFyZSBhbHNvIGErbG90IG9mIGZyaWVuZHMrd2hvIGhhdmUrbmV2ZXIrbWV0IHBhcnRpY2lwYXRpbmcraW4rdGhpcyBwcm9qZWN0Lr== QXMgYSBmcmVlIHNpdGUsID== d2l0aCB0aGUgcmVjZW50IHllYXJzJyBDVEYgY2hhbGxlbmdlcywg Q1RGIFdpa2kgaW50cm9kdWNlcyB0aGUga25vd2xlZGdlIGFuZCB0ZWNobmlxdWVzIGluIGFsbCBkaXJlY3Rpb25zIJ== b2YgQ1RGIHRvIG1ha2UgaXQgZWFzaWVyIGZvciBiZWdpbm5lcnMgdG8gbGVhcm4gaG93IHRvIGdldHRpbmcgc3RhcnRlZCBhdCBwbGF5aW5nIENURi4= QXQgcHJlc2VudCwg Q1RGIFdpa2kgbWFpbmx5IGNvbnRhaW5zIHRoZSBiYXNpYyBrbm93bGVkZ2Ugb2YgQ1RGIGluIGFsbCBtYWpvciBkaXJlY3Rpb25zLCD= YW5kIGlzIHdvcmtpbmcgaGFyZCB0byBpbXByb3ZlIHRoZSBmb2xsb3dpbmcgY29udGVudHMu QWR2YW5jZWQga25vd2xlZGdlIGluIHRoZSBDVEYgY29tcGV0aXRpb25= UXVhbGl0eSB0b3BpY3MgaW4gdGhlIENURiBjb21wZXRpdGlvbg== Rm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGFib3ZlLCBzZWUgdGhlIFtQcm9qZWN0c10g KGh0dHBzOi8vZ2l0aHViLmNvbS9jdGYtd2lraS9jdGYtd2lraS9wcm9qZWN0cykg b2YtdGhlIENURiBXaWtpIGZvciBhIGRldGFpbGVkIGxpc3Qtb2Ytd2hhdCBpcyBiZWluZyBkb25lIGFuZCB3aGF0IHRvIGRvLt== T2YgY291cnNlLCB0aGUgQ1RGIFdpa2kgaXMgYmFzZWQgb24gQ1RGLCA= YnV0IGl0IGlzIG5vdCBsaW1pdGVkIHRvIENURi4gSW4gdGhlIGZ1dHVyZSwg Q1RGIFdpa2kgd2lsbD== SW50cm9kdWNpbmcgdG9vbHMgaW4gc2VjdXJpdHkgcmVzZWFyY2ggYXJlYX== TW9yZSBpbnRlZ3JhdGlvbiB3aXRoIHNlY3VyaXR5IGFyZWE= SW4gYWRkaXRpb24sIGdpdmVuIHRoZSBmb2xsb3dpbmcgdHdvIHBvaW50c9== VGVjaG5vbG9neSBzaG91bGQsYmUsc2hhcmVkIGluIGFuIG9wZW4sbWFubmVyLs== U2VjdXJpdHkgb2ZmZW5zaXZlIGFuZCBkZWZlbnNpdmUg dGVjaG5vbG9naWVzIGFyZSBhbHdheXMgdXAgdG8gZGF0ZSwg YW5kIG9sZCB0ZWNobm9sb2dpZXMgbWF5IGZhaWwgYXQgYW55IHRpbWUg aW7gdGhlIGZhY2Ugb2YgbmV3IHRlY2hub2xvZ2llcy7= Q1RGIFdpa2kmd2lsbCBuZXZlciBwdWJsaXNoIGJvb2tzLm== RmluYWxseSwgdGhlIENURiBXaWtpIG9yaWdpbmF0ZXMgZnJvbSB0aGUgY29tbXVuaXR5LCB= YXMgYW4gaW5kZXBlbmRlbnQgb3JnYW5pemF0aW9uLCBhZHZvY2F0ZXMgZnJlZWRvbSBvZiBrbm93bGVkZ2Us IHdpbGwgbmV2ZXIgYmUgY29tbWVyY2lhbGl6ZWQgaW4gdGhlIGZ1dHVyZSwg YW5kIHdpbGwoYWx3YXlzIHJlbWFpbiBpbmRlcGVuZGVudCBhbmQoZnJlZWRvbSoqLo== Q1RGIG9yaWdpbmF0ZWQgZnJvbSB0aGUgY29tcGV0aXRpb24gZ2FtZSBiZXR3ZWVuII== aGFja2VycyBpbiB0aGUsZm91cnRoIERFRkNPTiBpbiAxOTk2Ls== RWFybHkgeWVhcnMgb2YgQ1RGICgxOTk2LTIwMDEpLCC= dGhlcmUgYXJlIG5vIGNsZWFyIHJ1bGVzLCBubyBwcm9mZXNzaW9uYWwg Y29tcGV0aXRpb24gcGxhdGZvcm0gYW5kIGVudmlyb25tZW50LiB= VGhlIG9yZ2FuaXplciBwcmVwYXJlcyB0aGUgcnVsZXMgb2YgdGhlII== Y29tcGV0aXRpb24gKHByZXBhcmF0aW9uIG9mIHNlY3VyaW5nIHRoZSBuZXR3b3JrLCD= YXMgd2VsbCBhcyBleHBsb2l0aW5nIGl0cyB2dWxuZXJhYmlsaXRpZXMpLiA= TW9zdCBvZiB0aGUgb3JnYW5pemVycyBhcmUganVzdCD= ZW50aHVzaWFzdGljIG5vbi1wcm9mZXNzaW9uYWwgdm9sdW50ZWVycyC= d2hvIGFzc2lzdHMgaW4gbWFudWFsIHNjb3Jpbmcu RHVlIHRvIGxhY2sgb2YgYXV0b21hdGVkIHNjb3JpbmcgYW5kIHRlY2huaWNhbCByZWZlcmVlcywg YWxvbmcgd2l0aCBzY29yaW5nIGRlbGF5cyBhbmQgZXJyb3JzLCB= dW5yZWxpYWJsZSBuZXR3b3JrIGFuZCBpbXByb3BlciBjb25maWd1cmF0aW9uLCA= Z3JlYXQtY29udHJvdmVyc3ktYW5kIGRpc3NhdGlzZmFjdGlvbiBpcyB3aWRlc3ByZWFkLt== QSBwcm9mZXNzaW9uYWwgdGVhbSB3aWxsIGhhbmRsZSB0aGUgY29tcGV0aXRpb24gcGxhdGZvcm0sIHByb2JsZW1zLCBvcmdhbml6YXRpb24gb2YgdGhlIGV2ZW50IGFuZCBhdXRvbWF0ZWQgc2NvcmluZyBzeXN0ZW0uIFRoZSBwYXJ0aWNpcGF0aW5nIHRlYW1zIGFyZSByZXF1aXJlZCB0byBzdWJtaXQgYW4gYXBwbGljYXRpb24gZm9yIHBhcnRpY2lwYXRpb24gYW5kIHdpbGwgYmUgc2VsZWN0ZWQgYnkgdGhlIG9yZ2FuaXplcnMgb2YgdGhlIERFRkNPTiBpbiBhIG1lZXRpbmcu RHVyaW5nIHRoZSB0aHJlZSB5ZWFycyB3aXRoIF== TGVnaXRCUyBvcmdhbmlzaW5nIHRoZSBERUZDT04gQ1RGIGNvbXBldGl0aW9uLCC= YSBmZXcgbW9kaWZpY2F0aW9ucyBoYXZlIGJlZW4gbWFkZTo= VGhlIGNvbXBldGl0aW9uIGZvY3VzZXMgb24gdGhlIGlubmVyIHdvcmtpbmdzIG9mIE== dGhlIGNvbXB1dGVyLCBpdHMgc2VjdXJpdHkgZmVhdHVyZXMgYW5kIGNhcGFiaWxpdGllcywg d2ViIGV4cGxvaXRhdGlvbiBoYXMgYmVlbiBjb21wbGV0ZWx5IGlnbm9yZWQu VmFyaW91cyBvZiBDUFUgYXJjaGl0ZWN0dXJlcywg b3BlcmF0aW5nIHN5c3RlbXMgYW5kIGxhbmd1YWdlcy7= Ilplcm8gU3VtIiBzY29yaW5nIHJ1bGUu QSB3aWRlciBza2lsbHNldCBkZW1hbmRlZDog UmV2ZXJzZSBlbmdpbmVlcmluZywgZXhwbG9pdGluZyBsb29waG9sZXMsID== cHduaW5nLCBwYXRjaGluZywgbmV0d29yayB0cmFmZmljIGFuYWx5c2lzLCA= c3lzdGVtIHNlY3VyaXR5LCBhbmQgc2VjdXJpdHktb3JpZW50ZWQg c3lzdGVtIGZvciBwcm9ncmFtbWluZyBhbmQtZGVidWdnaW5nLt== VGhlIHByb2JsZW0gc29sdmluZyBtb2RlIChKZW9wYXJkeSkg aXMkY29tbW9uIGluIG9ubGluZSBzZWxlY3Rpb24kY29tcGV0aXRpb25zLk== SW4gdGhlIENURiBzeXN0ZW0gb2YgcHJvYmxlbS1zb2x2aW5nIG1vZGUsIM== dGhlIHBhcnRpY2lwYXRpbmcgdGVhbXMgY2FuIHBhcnRpY2lwYXRlIHRocm91Z2ggdGhlIEludGVybmV0IG9yIHRoZSBvbi1zaXRlIG5ldHdvcmsuIB== VGhlIHBhcmFtZXRlciB0ZWFtIGNhbiBzb2x2ZSB0aGUgbmV0d29yayBzZWN1cml0eSC= dGVjaG5vbG9neSBjaGFsbGVuZ2UgYW5kIG9idGFpbiB0aGUgY29ycmVzcG9uZGluZyBzY29yZSBieSA= aW50ZXJhY3Rpbmcgd2l0aCB0aGUgb25saW5lIGVudmlyb25tZW50IG9yIG9mZmxpbmUgYW5hbHlzaXMgb2YgdGhlIGZpbGUsIJ== YW5kIEFDTS4gVGhlIHByb2dyYW1taW5nIGNvbXBldGl0aW9uIGFuZCB0aGUgaW5mb3JtYXRpY3Mg T2x5bXBpYyBjb21wZXRpdGlvbiBhcmUgc2ltaWxhciwg cmFua2luZyBhY2NvcmRpbmcodG8odGhlIHRvdGFsIHNjb3JlIGFuZCB0aW1lLo== VGhlIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgcHJvYmxlbSBzb2x2aW5nII== bW9kZSB3aWxsIGdlbmVyYWxseSBzZXQgYSBibG9vZCMsIHR3byBibG9vZCMsIM== dGhyZWUgYmxvb2QgLCB0aGF0IGlzLCB0aGUgZmlyc3QgdGhyZWUgdGVhbXMgdG8gY29tcGxldGUgdGhlIGZpcnN0II== c2NvcmUgd2lsbCBnZXQgZXh0cmEgcG9pbnRzLCBzbyB0aGlzIGlzIG5vdCD= b25seSBJdCBpcyBhbiBpbmNlbnRpdmUgdG8gc2NvcmUgdGhlIHRlYW0gdGhhdCBzb2x2ZXMgdGhlIHByb2JsZW0gZmlyc3QsIH== YW5kIGl0IGlzIGFsc28gYW4gaW5kaXJlY3QgbWFuaWZlc3RhdGlvbiBvZiB0ZWFtIGFiaWxpdHku T2YgY291cnNlLCB0aGVyZSBpcyBhbHNvIGEgcG9wdWxhciBzY29yaW5nIHJ1bGUgaXMgdG8gc2V0IHRoZSBpbml0aWFsIHNjb3JlIG9mIG== ZWFjaCBxdWVzdGlvbiwgYW5kIGdyYWR1YWxseSByZWR1Y2UgdGhlIHNjb3JlIG9mIHRoZSBxdWVzdGlvbiBhY2NvcmRpbmcgdG8g dGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIGFuc3dlcmluZyB0aGUgbnVtYmVyIG9mIHRoZSBxdWVzdGlvbiwg dGhhdCBpcywgaWYgdGhlIG51bWJlciBvZiBwZW9wbGUgYW5zd2VyaW5nIHRoZSBxdWVzdGlvbiBpcyBtb3JlLCBUaGVuIHRoZSBzY29yZSB= b2YgdGhpcyBxdWVzdGlvbiBpcyBsb3dlci4g RmluYWxseSwgaXQgd2lsbCBkcm9wIHRvIGEgZ3VhcmFudGVlZCBib3R0b20gdmFsdWUgYW5kIHdpbGwgbm90IGZhbGwu VGhlIHRvcGljIHR5cGVzIG1haW5seSBpbmNsdWRlIFdlYiBOZXR3b3JrIEF0dGFjayBhbmQgRGVmZW5zZSwg UkUgUmV2ZXJzZSBFbmdpbmVlcmluZywgUHduIEJpbmFyeSBFeHBsb2l0YXRpb24sIA== Q3J5cHRvIFBhc3N3b3JkIEF0dGFjaywgTW9iaWxlIE1vYmlsZSBTZWN1cml0eSBhbmQg TWlzYyBTZWN1cml0eSBNaXNjZWxsYW5lb3VzIFRoZXNlIHNpeCBjYXRlZ29yaWVzLt== SW4gdGhlIDIwMTYgV29ybGQgSGFja2luZyBNYXN0ZXJzIENoYWxsZW5nZSMoV0NURiksIM== dGhlIEJFTExVTUlOQVIgQ1RGIChXYXIgYW5kIFNoYXJlKSBzeXN0ZW0gaW5pdGlhdGVk YnkgdGhlIEtvcmVhbiBQT0MgU0VDVVJJVFkgdGVhbSB3YXMgaW50cm9kdWNlZCD= Zm9yIHRoZSBmaXJzdCB0aW1lLiBTaW5jZSB0aGVuLCB0aGUgQkVMTFVNSU5BUiBtb2RlIA== aGFzIGJlZW4gc3RhcnRlZCBpbiB0aGUgY291bnRyeSwgYW5kIHRoZSBjdXJyZW50IHN5c3RlbSBpcyA= MjDxNi4gVGhlIFhNYW4gU3VtbWVyIENhbXDgU2hhcmluZyBDb21wZXRpdGlvbiBvZiBaaHVnZSD= SmlhbndlaSBhbmQgdGhlICJCYWlkdSBDdXDiID== Q1RGIENvbXBldGl0aW9uIGluIFNlcHRlbWJlciBvZiB0aGUjc2FtZSB5ZWFyLj== QXQgdGhlIHNhbWUgdGltZSwgdGhlcmUgaXMgYWxzbyBhbiBvZmZpY2lhbCC= d2Vic2l0ZSBvZiB0aGUgQkVMTFVNSU5BUiBzeXN0ZW06IGh0dHA6Ly9iZWxsdW1pbmFyLm9yZy8= SW51cm9kdWN1aW9uIHRvIHRoZSBjb21wZXRpdGlvbiBzeXN1ZW1= QmVsbHVtaW5hciwgaGFja2luZyBjb250ZXN0IG9mIFBPQywg c3RhcnRlZCBhdCBQT0MyMDE1IGluIEtPUkVBIGZvciB0aGUgZmlyc3QgdGltZS4g QmVsbHVtaW5hciBpcyBmcm9tICdCZWxsdW0nKHdhciBpbiBMYXRpbikgYW5kICdzZW1pbmFyJy4g SXQpaXMpbm90IGEpanVzdCBoYWNraW5nIGNvbnRlc3QpYnV0IGEpa2luZCBvZp== ZmVzdGl2YWwgY29uc2lzdGVkIG9mIENURiAmIHNlbWluYXIgZm9yIHRoZSBzb2x1dGlvbiBhYm91dCBjaGFsbGVuZ2VzLiA= T25seSBpbnZpdGVkIHRlYW1zIGNhbiBqb2luIEJlbGx1bWluYXIuID== RWFjaCB0ZWFtIGNhbiBzaG93IGl0cyBhYmlsaXR5IHRvIGF0dGFjayB3aGF0IG90aGVyIHRlYW1zIHdhbnQgdG8gcHJvdGVjdCBhbmQgY2Fu ZGVmZW5kIHdoYXQkb3RoZXJzIHdhbnQkdG8kYXR0YWNrLk== QXMgdGhlIG9mZmljaWFsIHdlYnNpdGUgaW50cm9kdWNlcywg dGhlIEJFTExVTUlOQVIgQ1RGIHN5c3RlbSBpcyBjaGFsbGVuZ2VkIGJ5IHRoZSBpbnZpdGVkIHRlYW1zLCA= YW5kIGFmdGVyIHRoZSBnYW1lIGlzIGZpbmlzaGVkLCB0aGUgaWRlYXMsIM== bGVhcm5pbmcgcHJvY2VzcyBhbmQgcHJvYmxlbS1zb2x2aW5nIGlkZWFzIG9mIHRoZSBjb21wZXRpdGlvbiBhcmUgc2hhcmVkLiC= VGhlIHRlYW0gc2NvcmUgaXMgYmFzZWQgb24gdGhlIHNjb3JlLCB= dGhlIHByb2JsZW0oc2NvcmUoYW5kIHRoZSBzaGFyZSBzY29yZSBmb3IoYSBjb21wcmVoZW5zaXZlIGV2YWx1YXRpb24oYW5kIHRoZSBmaW5hbCByYW5raW5nLo== QWZ0ZXIgdGhlIGdhbWUgaXMgb3ZlciwgdGhlIHRlYW0gcmVzdHMgYW5kIGlzII== cmVhZHkgdG8gbWFrZSBhIHNoYXJlZCBQUFQgKGFsc28gcmVhZHkgZm9yIHRoZSBwcm9ibGVtIHN0YWdlKS4g V2hlbiBzaGFyaW5nIHRoZSBtZWV0aW5nLCBlYWNoIHRlYW0gc2VuZHMgMiBUaGUgdGVhbSBtZW1iZXJzIM== dG9vayB0aGUgc3RhZ2UgdG8gY2Fycnkgb3V0IHRoZSBwcm9ibGVtLXNvbHZpbmcgaWRlYXMsII== dGhlIGxlYXJuaW5nIHByb2Nlc3MgYW5kIHRoZSBzaGFyaW5nIG9mIGtub3dsZWRnZSBwb2ludHMuIN== QWZ0ZXIgdGhlIHByZXNlbnRhdGlvbiwgZW50ZXIgdGhlIGludGVyYWN0aXZlIGRpc2N1c3Npb24gc2Vzc2lvbiwg YW5kIHRoZSBleHBsYW5hdGlvbiByZXByZXNlbnRhdGl2ZSBuZWVkcyB0byBhbnN3ZXIgdGhlIHF1ZXN0aW9ucyD= cmFpc2VkIGJ5IHRoZSBqdWRnZXMgYW5kIG90aGVyIHBsYXllcnMuID== VGhlcmUgaXMgbm90IG11Y2ggdGltZSBsaW1pdCBmb3IgY29tbWVudGFyeSwg YnV0IHRpbWUgdXNhZ2UgaXMgYSBjcml0ZXJpb24gZm9yIHNjb3Jpbmcu NTDlIG9mIHRoZSBwb2ludHMgKDMwJSBvZiB0aGUgdG90YWwgc2NvcmUpID== YXJlIHNjb3JlZCBieSB0aGUganVkZ2VzIGFjY29yZGluZyB0byB0aGUgbG== ZXZlbCBvZiBkZXRhaWwgc3VibWl0dGVkIGJ5IHRoZSBqdWRnZXMsIHRoZSBjb21wbGV0ZSBxdWFsaXR5LCA= dGhlIHN1Ym1pc3Npb24gdGltZSwgYW5kIHRoZSBvdGhlciA1MCUgYXJlIHNjb3JlZCBhY2NvcmRpbmcgdG8g dGhlIGZpbmFsIHByb2JsZW0gYWZ0ZXIgdGhlIGdhbWUuIEV4YW1wbGUgb2Ygc2NvcmluZyBmb3JtdWxhOiB= U2NvcmUgPSBNYXhTY29yZSAtLSB8IE4gLS0gRXhwZWN0X04gfC4g
python脚本:
def get_base64_diff_value(s1, s2): base64chars = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/‘ res = 0 for i in xrange(len(s2)): if s1[i] != s2[i]: return abs(base64chars.index(s1[i]) - base64chars.index(s2[i])) return res def solve_stego(): with open(‘3.txt‘, ‘rb‘) as f: file_lines = f.readlines() bin_str = ‘‘ for line in file_lines: steg_line = line.replace(‘\n‘, ‘‘) norm_line = line.replace(‘\n‘, ‘‘).decode(‘base64‘).encode(‘base64‘).replace(‘\n‘, ‘‘) diff = get_base64_diff_value(steg_line, norm_line) print diff pads_num = steg_line.count(‘=‘) if diff: bin_str += bin(diff)[2:].zfill(pads_num * 2) else: bin_str += ‘0‘ * pads_num * 2 print goflag(bin_str) def goflag(bin_str): res_str = ‘‘ for i in xrange(0, len(bin_str), 8): res_str += chr(int(bin_str[i:i + 8], 2)) return res_str if __name__ == ‘__main__‘: solve_stego()
flag{944776b2c95a350bb27d7038d42b273a}
原文:https://www.cnblogs.com/779ano/p/13973008.html