
【CTF WriteUp】2023数字中国创新大赛网络数据安全赛道初赛WP
2023数字中国创新大赛网络数据安全赛道初赛WP数据安全题目-SQL注入
·
2023数字中国创新大赛网络数据安全赛道初赛WP
数据安全题目-SQL注入
解题过程如下,全靠大神带飞,有幸参与,菜鸟要学的可太多了。。。。。。
数据安全-端口管理系统
①直接访问,抓包,用户名密码明文传输
②考虑访问/www.zip,源码可下载,进行源码分析,可能存在注入,尝试注入
③已知库信息
④直接用Sqlmap跑注入点,发现密码处存在注入,跑出payload
⑤继续跑表等信息,跑admin,得到加密后的密文
第一次容器失效,再次跑出密文:
dmnOatTDBuqnMgQXCH4r/Yv/r4slOh+O2ZViLh5/u6yZV9f4mxd+GpYuPigRPmT3
⑥分析之前的源码,可知经过了AES加密算法处理,依据AES加密算法原理需考虑密钥key和偏移量iv进行解密
⑦使用python,依据lib.php编写一个脚本(详见ase.py),打印出key和iv
⑧再将加密的密文解密可得flag
flag{b9331d74-fd8c-44bb-93b3-e7591f74a3d4}
脚本代码
import math
import hashlib
import base64
class AES_key:
def __init__(self):
self.pi = "6.2831853174"
def get_chars(self):
chars_list = []
for i in range(1, 27):
chars_list.append(chr(96 + i))
return chars_list
def get_pi_chars(self):
n_pai = self.pi
chars_list = self.get_chars()
n_pai = n_pai.replace(".", "")
n_pai_array = list(n_pai)
pi_chars_list = []
for i in range(len(n_pai_array)):
pi_chars_list.append(chars_list[int(n_pai_array[i])])
return "".join(pi_chars_list)
@staticmethod
def aaa(n: int) -> int:
return n % 5
def bbb(self, n: int) -> int:
s = (n + 1) * (n - 1) % 5
s += n * 4 % 3
s += n // 4 * 3
s = self.aaa(314) / ((s % 5) * n + 7) + 5
return s
def ccc(self, n: int) -> str:
k = 3
chars_list = self.get_chars()
pad_chars_list = []
for i in range(0, int(n * k), k):
pad_chars_list.append(chars_list[i])
return "".join(pad_chars_list)
class AES_enc:
def __init__(self, data: str):
self.cipher = self.enc_AES(data)
def enc_AES(self, data: str) -> str:
s = AES_key()
key = s.get_pi_chars() + s.ccc(s.bbb(2568))
print(f"key:{key}")
iv = hashlib.md5(key.encode("utf-8")).hexdigest()[:16]
print(f"iv:{iv}")
mod = 'AES-128-CBC'
enc = openssl_encrypt(data, mod, key, 1, iv)
return base64.b64encode(enc.encode("utf-8")).decode("utf-8")
def get_cipher(self) -> str:
return self.cipher
def set_cipher(self, cipher: str):
self.cipher = cipher
def openssl_encrypt(data, mod, key, options, iv):
# 请使用 OpenSSL 加密函数
return data
a = AES_enc("aaa")
print(a.cipher)
更多推荐
所有评论(0)