THM-study2
子域名枚举
子域名枚举是为了扩大攻击面,试图发现更多潜在漏洞。
OSINT-SSL/TLS证书
SSL/TLS证书
我们可以通过在线网站 http://crt.sh/ 以及 https://ui.ctsearch.entrust.com/ui/ctsearchui 所提供的一个可搜索的证书数据库,来查找某个证书的当前和历史记录。
谷歌hacking
https://www.ddosi.org/b94/详细请看
子域名枚举自动化工具
1subdomain e -d baidu.com -o output.txt
身份验证绕过
ffuf用户名枚举
12./ffuf -w username.txt -X POST -d "username=FUZZ&email=x&password=x&cpassword=x" -H "Content-Type: application/x-www-form-urlencoded" -u "http://10.10.189.159/customers/signup" ...
off-by-one堆块向后overlapping
漏洞点
漏洞点在edit函数中,是off-by-one。没有UAF
攻击思路
利用off-by-one溢出,将size增大,然后free掉,再申请的话,就是申请比之前大的堆块,这样就能做到向后overlapping,堆块重合。
1234add(0x18,'a')add(0x10,'a')add(0x10,'a')add(0x10,'/bin/sh\x00')
先存放’/bin/sh\x00’,方便后面利用system(‘/bin/sh\x00’)
利用edit中的off-by-one修改chunk3的size位,将0x21修改为0x81
如果将其free掉,那么这个堆块就会被放到0x80的fastbins中,造成了堆块向后扩展、重叠
再将其malloc出来,就可以通过这个堆块溢出到后面0x20的堆块,将保存content的堆块的content指针替换为free的got表地址。那么原本对content堆块地址的操作都是对free的got表的操作。可以进行libc泄露,然后再将其替换为system。这样 ...
利用realloc调整栈帧打onegadget
漏洞点
利用edit函数,选择修改size时,如果这个size比原来的size大10,那么就会比原来的size多一字节的范围,所以性相当于一个off-by-one。没有UAF
思路
那么思路就是利用这个off-by-one来构造堆块覆盖向后overlapping
第一个堆块利用off-by-one修改size为0xd1,这样就把chunk3和chunk4覆盖了。申请一个小堆块,让unsortedbin的fd和bk覆盖到chunk3的fd位置,然后泄露Libc。
再将0x71这个chunk释放到fastbins中
接着将剩余的unsortedbin全部申请出来,利用这个chunk修改chunk4也就是size为0x71这个堆块的fd,让这个fd指向__malloc_hook部分,这样申请两次0x60,就能申请到能控制到__malloc_hook。然后修改onegadget即可。
但是由于所有onegadget都不行,那么就需要满足onegadget的利用条件
那么就需要利用realloc函数开头的push一堆栈操作来调整栈帧。
所以需要覆盖__malloc_hook为reall ...
堆溢出-堆块向前overlapping
四个功能,保护全开
add
12345678910111213141516171819202122232425262728void __fastcall add(__int64 a1){ int i; // [rsp+10h] [rbp-10h] int v2; // [rsp+14h] [rbp-Ch] void *v3; // [rsp+18h] [rbp-8h] for ( i = 0; i <= 15; ++i ) { if ( !*(24LL * i + a1) ) { printf("Size: "); v2 = sub_138C(); if ( v2 > 0 ) { if ( v2 > 4096 ) v2 = 4096; v3 = calloc(v2, 1uLL); if ( !v3 ) exit(-1); *(24LL * i + a1) ...
堆溢出利用unlink劫持free_got
漏洞点
存在堆溢出漏洞,并且溢出范围较大,不存在UAF。
思路
因为溢出范围较大,所以可以考虑利用unlink。
首先利用堆溢出将chunk向前overlapping,这样就拥有了一个比较大的chunk。
1234567add(0x80)add(0x80)add(0x80)add(0x10)delete(0)edit(1,p64(0)*16 + p64(0x120)+p64(0x90))delete(2)
1delete(2)
此时free掉0x1073120处堆块的会发生向前合并,那么就会有一整块unsortedbin,并且这个unsortedbin中还有一个0x90大小的malloc chunk。
所以说满足的条件需要有三个
要被unlink的chunk的size字段要和跟它相邻高地址的chunk的pre_size字段相等。(不包含标志位)
要被unlink的chunk的相邻高地址的chunk的size字段的inuse位必须是0,因为要被unlink的这个chunk一定是free状态。
要被unlink的chunk的fd和bk必须是一个完整的双向链表
对于这道题,我 ...
THM-study1
主机枚举
推荐工具:nmap。强大的网络扫描和安全审计工具
常用命令
基本扫描
1nmap 10.10.191.55 #对目标执行基本的扫描,扫描默认端口
扫描特定端口或端口范围
12nmap -p 22,80 10.10.191.55nmap -p 1-1000 10.10.191.55
扫描时确定主机状态(ping扫描)
1nmap -sn 10.10.191.55 #仅确定主机是否在线,不扫描端口
扫描使用特定协议的端口
12nmap -sU 10.10.191.55 #执行UDP端口扫描nmap -sT 10.10.191.55 #执行TCP端口扫描
版本探测
1nmap -sV 10.10.191.55 #探测端口上运行的服务的版本信息
操作系统探测
1nmap -0 10.10.191.55 #尝试识别目标主机的操作系统
启动脚本扫描
1nmap --script=[script] 10.10.191.55 #使用nmap脚本引擎执行特定Nmap脚本
使用特定扫描技术
12nmap -sS 10.10.191.55 #进行SYN扫描(半开放扫描)nmap -sF 1 ...
Crypto-RSA
RSA基础
RSA密钥生成步骤
(1)随机选择两个不相等的质数p和q
比如选择61和53
在实际应用中,这两个指数越大就越难破解
(2)计算p和q的乘积n
n=61*53=3233
3233写成二进制是110010100001,共12位,故该密钥是12位的
目前主流可选值:1024、2048、3072、4096等,低于1024bit的密钥已经不建议使用
(3)计算n的欧拉函数$\phi(n)$
欧拉函数是小于x的整数中与x互质的数的个数,一般用$\phi(x)$表示
互质是指两个数的公约数只有1,比如15和31
$\phi(8)$就等于4,因为8以内的与8互质的数只有1、3、5、7这四个数
欧拉函数的性质:
如果$n=p*q$且p、q互质,则$\phi(n)=\phi(pq)=\phi(p)\phi(q)$
如果n是质数,则$\phi(n)=n-1$
根据这两个性质可得:
$\phi(p)=p-1,\phi(q)=q-1$,所以$\phi(n)=(p-1)*(q-1)$
所以可得例子中的$\phi(n)=60*52=3120$
(4)找出公钥e
公钥e是按照条件随 ...
Crypto-仿射密码
仿射密码
凯撒密码是将明文与密钥相加得到密文,仿射密码则是将明文与密钥的一部分相乘,然后再加上密钥的另一部分
为了便于计算,将26个英文字母用数字表示:a=0,b=1,…,z=25
仿射加密的密钥有两个:a和b,取值范围都是[0,25]
a要求与26互质,互质就是者两个数的公因数只有1
26的因数:1、2、13
a的因素不包含2或13即可
仿射密码加密
x是明文,y是密文
加密公式:y=(ax+b)mod26
加密过程:
a=7、b=3
加密:
$$
y=(7x+3)mod26
$$
假设明文为c,那么x的值为2
所以y=17,密文为r
仿射密码解密
解密公式:
$$
x=a^{-1}(y-b)mod26
$$
如果不考虑求模,根据加密公式很容易想到解密公式应该是x=(y-b)/a
因为要求模,除法很可能会得到小数,而小数无法做模运算
解决的方法是将除法转换为乘法
$$
a{-1}称为a的乘法逆元,((y-b)/a)mod26与a{-1}(y-b)mod26完全等价
$$
仿射密码解密的关键就在于如何求乘法逆元
...
《IOT 废物学习之路》(7)--D-Link-DIR-815路由器多次溢出漏洞分析
《IOT废物学习之路》(7)–D-Link-DIR-815路由器多次溢出漏洞分析
漏洞公告:https://www.exploit-db.com/exploits/33863
漏洞介绍
从POC和漏洞报告中可以看出,该漏洞存在于名为hedwig.cgi的CGI脚本中,未认证攻击者通过调用这个CGI脚本传递一个超长的Cookie值,使程序堆栈溢出,从而获得路由器远程控制权限。
漏洞分析
固件提取
https://rebyte.me/en/d-link/89510/file-592084/固件下载地址
解压缩得到:DIR-815-FW-1.01b14_1.01b14.bin固件
利用binwalk提取固件
1234sudo docker run -it --rm \-v $(pwd):$(pwd) \asdqwe876/iot_analyze \binwalk --run-as=root -C $(pwd) -Mer $(pwd)/DIR-815-FW-1.01b14_1.01b14.bin
但是出现了很多告警,大致就是该软链接指向解压目录之外,为了安全起见binwalk会将其重 ...
密码学基础知识
网络安全三要素
机密性
完整性
可用性
古典加密
替换:
摩斯密码,凯斯密码
移位:
栅栏密码
替换+移位:
凯撒+栅栏
近现代加密
流加密:
将明文按字符逐位(逐比特)地、对应地进行加密。
如RC系列
分组加密:
将明文分成固定长度的分组,如64bit或128bit一组,用同一密钥和算法对每个分组加密。
如DES、3DES、AES、IDEA
对称式加密
对称加密是指通信双方对信息的加密和解密都使用相同的密钥
对称加密机制的安全性取决于密钥的保密性,而不是算法的安全性。即便知道了密文以及加密算法的原理,也无法解密。
不需要对算法保密,只需要对密钥进行保密
对称式加密的优缺点:
优点:效率高,适合对大数据块的加密
缺点:密钥管理困难,密钥维护的工作量大
非对称式加密(公钥加密)
每个用户拥有一对密钥:一个私钥和一个公钥
私钥由用户严密保管,公钥发布出去,所以人都可以自由获得
用公钥加密的信息只能用相应的私钥解密
根据私钥,可以计算出公钥,但是根据公钥,却无法计算出私钥
非对称式加密的优缺点:
优点:密钥管理简单,密钥维护的工作量比较小
缺点:加密效率不高,相比 ...