web
最新文章SQL注入
SQL简介SQL,即结构化查询语言(Structured Query Language),也就是数据库语言。
MySQL是数据库管理系统,用来管理数据库。
SQL注入SQL注入指的是web应用程序对用户输入数据合法性过滤不严,导致攻击者可以在程序中实现定义好的查询语句结尾再添加额外的查询语句,实现非法操作。
合法的输入数据是正常的中英文和数字,而',@,#,$,%这种字符通常是不合法的。
例如:
123456789101112131415<?php$conn = mysqli_connect($servername, $username, $password, $dbname);if (!$conn) { die("Connection failed: " . mysqli_connect_error());}$username = $_POST['username'];$password = $_POST['password'];$sql = "select * from u ...
web
web基础3:文件包含和文件上传
HTTP报文使用Burp抓包和修改时,需要学会去看HTTP的请求报文,包含了客户端发送给服务器的额外信息,这些信息可以帮助服务器更好地处理请求。有些题甚至对请求头做了限制,所以就需要学会看HTTP头。
报文格式报文分为请求报文和响应报文。请求报文包括以下部分:
请求行:包括请求方法、URL 和 HTTP 版本。
请求头:包括客户端和服务器之间的交互信息,例如浏览器类型、语言、Cookie 等。
请求体:POST 请求时传递的数据,例如表单数据。
响应报文包括以下部分:
状态行:包括协议版本、状态码和状态信息。
响应头:包括服务器和客户端之间的交互信息,例如响应的时间、响应长度等。
响应体:服务器返回的数据,例如 HTML 页面或 JSON 数据。
状态信息状态信息在HTTP中用一个三位数数字表示,表示对服务器请求的处理结果。常见的状态码包括:
1xx:已收到请求,需要客户端的继续操作。
2xx:成功,服务器成功处理了请求。
3xx:重定向,需要客户端进一步操作才能完成请求。
例如在接受到的响应报文为:
12345678HTTP/1.1 302 FoundDate: Fri, 02 A ...
web
Python沙箱逃逸
参考文章:python沙箱逃逸探究·总览(HNCTF题解) - 知乎 (zhihu.com)
技术分享 | 谈一谈CTF中的python沙箱逃逸-腾讯云开发者社区-腾讯云 (tencent.com)
一文看懂Python沙箱逃逸-腾讯云开发者社区-腾讯云 (tencent.com)
PyjailPython沙箱逃逸是CTF题目中比较常见的类型,是指在受限环境中(通常称为“沙箱”)执行Python代码时,通过某种手段绕过安全限制,访问或修改不应被访问的资源或执行不应被执行的操作的过程,说白了最终目标就是执行系统任意命令,次一点的写文件,再次一点的读文件。
特性先研究一下python的一些特性:
python的类均继承自object基类。
python的类中有一些静态方法,如bytes.fromhex、int.frombytes等,对于这些类的实例可以直接调用这些方法:
1b'1'.fromhex('1234') # b'\x124'
一个特例是整数参数不支持这种操作,如1.frombytes(b'\x124' ...
web
web基础2:PHP部分
一些推荐文章:PHP 入门基础漏洞 | Drunkbaby’s Blog (drun1baby.top)
传参web传参有GET和POST两种请求方法向服务器提交数据。
GET传参GET传参直接在网址后/?后接参数即可,例如传入一个a=1的参数就可以127.0.0.1/?a=1。
多个参数之间加&连接符。
POST传参POST传参可以使用hackbar工具。
最新版的hackbar已经开始收费了,网上随便找一个旧版的装上完事。
先Load URL之后勾选Post data,在弹出的新框中输入要POST传入的参数即可。输入之后点Execute即可。
练习题目来自[SWPUCTF 2021 新生赛]jicao:
url里GET传参,传完再hackbar用POST传参,比较简单:
PHP基本函数和操作
PHP中的->是一种操作符,用来访问对象的属性或者方法。
如果这里我们有一个$obj对象,且这个对象有一个名字为property的属性和一个名为method的方法,可以使用$obj->property;访问属性,使用$obj->method();来调用 ...
Crypto
Paillier同态加密算法
回顾:同态根据对抽象代数的知识,同态的大体性质如下:$$E(a)\oplus E(b)=E(a+b)$$
$$E(a)\odot E(b)=E(a\cdot b)$$
同态加密算法包括全同态(FHE)、部分同态(SWHE)和半同态(PHE)三种。
FHE:支持无限次的乘法和加法运算,但是复杂度高,实际应用较少。
SWHE:支持有限次的加法和乘法运算。
PHE:只支持加法或者乘法运算的一种,加法同态算法有Paillier算法、DGK算法、OU算法、基于格密码的方案等;乘法同态有RSA算法、ElGamal算法等。PHE实际应用较多。
Paillier算法Paillier是一个支持加法同态的公钥密码系统。
密钥生成随机选择两个大素数$p,q$,满足:$$\gcd(pq,(p-1)(q-1))=1$$计算$n=pq$和$\lambda=\mathrm{lcm}(p-1)(q-1)$。
随机选择整数$g\in Z^*_{n^2}$,或者直接令$g=n+1$,优化计算速度。
定义$L$函数:$$L(x)=\frac{x-1}n$ ...
杂谈
可信计算的思想和原理
研究背景传统防御手段
由于计算机软硬件的复杂性、bug等直接间接导致信息安全问题,这些问题很难完全排除,传统的信息安全防御手段在封堵这些脆弱点上疲于奔命。
可信计算核心思想
可信计算承认计算机系统中存在的薄弱点,不去封堵,而是排除异己,禁止计算机系统中非授权软硬件的行为,从宏观角度保证系统脆弱点不会被非法、恶意利用。
拿疫情防控类比:
传统防护手段需要给所有人注射疫苗来防止被感染;
可信计算将健康的人和感染者隔离开来,防止被感染。
基本思想在可信计算中,主要进行三个操作:
可信报告:需要先出示可信报告;
允许接入:证明自己是可信的后才能允许接入;
行为检测:接入后还会对其行为进行监测。
可信报告主要是通过静态度量实现:首先建立基线(收集操作系统、配置文件、代码和数据的有关信息),进行和正常状态的对比分析,进行可信判定。
行为监测主要是通过动态度量实现:首先建立基线(收集设备正常状态下的流量进程等信息),然后可信防护部件会对设备进行不间断监测,一旦发现异常就会立即阻断。
发展阶段可信计算已经进入3.0时代:
1.0时代:通过纯软件实现的容错、故障诊断等机制。
2.0时代:增加硬件 ...
杂谈
qiskit学习
配置环境Python安装库:
12345pip install qiskit pip install qiskit_ibm_runtimepip install qiskit-aerpip install matplotlibpip install pylatexenc
由于绘制电路展示线路图片,通常可以用ipynb来运行代码得到可视化的线路图片。
绑定KEY科学上网注册一个IBM账号,获得KEY:
1234567from qiskit_ibm_runtime import QiskitRuntimeService # Save an IBM Quantum account and set it as your default account.QiskitRuntimeService.save_account(channel="ibm_quantum", token="<MY_IBM_QUANTUM_TOKEN>", set_as_default=True) # Load saved credentialsservice = Qis ...
数学
量子计算(一)
参考:量子计算与量子信息1。
基本概念量子计算和量子信息的研究对象是用量子力学系统能够完成的信息处理任务,牵扯到量子力学、计算机科学、信息论、密码系统。
量子比特量子计算和量子信息建立在量子比特的基础上。
量子比特像经典比特一样有两个可能状态,分别是:$$|0\rangle\ \ \ \ \ \ \ \ \ |1\rangle$$记号$|\rangle$叫做Dirac记号,在量子力学中表示状态。
量子比特和比特的区别:量子比特的状态可以落在$|0\rangle$和$|1\rangle$之外,可以是状态的线性组合,也就是叠加态:$$|\psi\rangle=\alpha|0\rangle+\beta|1\rangle$$这里的参数$\alpha,\beta$是复数,量子比特的状态是二维复向量空间中的向量。对于特殊的状态$|0\rangle,|1\rangle$称作计算基态,是构成这个向量空间的一组正交基。
计算机是不能通过检查量子比特来确定其量子状态的。计算机测量量子比特时,得到$0$的概率是$|\alpha|^2$,得到$1$的概率为$|\beta|^2$,根据概率,可以知道 ...
CTF
近期比赛复现Vol.4
RITSEC CTFCrypto[WarmUp]WordsX marks the spot, but not where the Pigpen lies; there, secrets hide in plain sight.
猪圈密码。
[WarmUp]EmailsWe’ve recovered some of Chase’s emails from his inbox. It seems he was conspiring with someone, but the last email is encrypted. Maybe the other emails contain clues that will help us decrypt it?
题目给了一些明文,还有一组密文,根据文章内容发现是MTP。
12345678Good morning,How are you?I've become concerned about the security of this email service. It's only a matter of time before ...
数学
置换群
想起了之前在BRICS+2023里发现一道很简短的题目,没想到里面大有学问。
信安数学基础简单了解了一下置换群,不过应试学的比较粗糙,继续深入了解一下。
前置知识置换和置换群对于某个组$(1,2,3)$,可以进行置换,使用itertools库的permutations()函数可以进行置换排列:
1234import itertools print(list(itertools.permutations([1, 2, 3]))) # [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
可以发现使用这个函数返回的是一个带有所有排列组合的集合,对于组成元素集合$X=(1,2,3)$,将$X$排列后得到的六种置换构成一个对称群$S_X$,这个对称群的某个子群就叫做一个置换群。
这里我们组成元素有$3$个,所以是$3$阶对称群。
置换群中的元素是一些置换,例如上面例子中存在某个置换:
\sigma=\pmatrix{1& 2& 3\\2& 3&1}满足:
\begin{cases}
\sigma(1)= ...