IO_FILE调试
IO_FILE做题流程前言在调试IO_FILE类型的题的时候总结的知识点
关于IO_FILE的libc更换在调试IO类型的题的时候,在之前我们需要换libc,因为一般题目给的libc都是没有符号表的,于是我们寻找一个与之对应的有符号表的libc即可,最好是一样的

没有一模一样的带符号的libc的,相同版本号的也可以
IO_FILE结构体查看有时候我们在分析IO的时候有对应的结构体可以看是最好的,这样我们就能明确知道我们改了哪些数据,这也是我们为什么要换libc的原因
自带的符号表变量如果是libc里面本身就有的符号,下面的命令可以直接打印出结构
1p [*_IO_list_all]
可以看到输出结果如下
 ...
IO_FILE做题总结
IO_FILE做题总结前言在调试IO_FILE类型的题的时候总结的知识点
关于IO_FILE的libc更换在调试IO类型的题的时候,在之前我们需要换libc,因为一般题目给的libc都是没有符号表的,于是我们寻找一个与之对应的有符号表的libc即可,最好是一样的
没有一模一样的带符号的libc的,相同版本号的也可以
IO_FILE结构体查看有时候我们在分析IO的时候有对应的结构体可以看是最好的,这样我们就能明确知道我们改了哪些数据,这也是我们为什么要换libc的原因
自带的符号表变量如果是libc里面本身就有的符号,下面的命令可以直接打印出结构
1p [*_IO_list_all]
可以看到输出结果如下
根据不同的结构体的属性,前面添加* ,&, 不加,有不同的效果
修改后的不会自动识别的地址有时候我们需要将IO_FILE的结构体或者JUMP表的结构体的地址更改,但是这种时候直接打印地址是不会自动转换为结构体的
于是我们就需要自己去加
例如我要查看我伪造的IO_FILE结构体对不对,用下面这个命令去定义即可
1p *(struct _IO_FILE_plus *) ...
IO_FILE 结构
IO_FILE 结构FILE 介绍FILE 在 Linux 系统的标准 IO 库中是用于描述文件的结构,称为文件流。 FILE 结构在程序执行 fopen 等函数时会进行创建,并分配在堆中。我们常定义一个指向 FILE 结构的指针来接收这个返回值。
FILE 结构定义在 libio.h 中,如下所示
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566struct _IO_FILE { int _flags; /* High-order word is _IO_MAGIC; rest is flags. */#define _IO_file_flags _flags /* The following pointers correspond to the C++ streambuf protocol. */ /* Note: Tk uses the _IO_read_ ...
IC卡破解和复制
IC卡破解和复制实验前言对IC卡感兴趣就研究了点,用于搞点好玩意,比如水卡破解什么的,这玩意自己搞来玩玩就行了。
工具
ACR122
用于读取和破解IC信息的,IC本身是有一定加密的。
IC可复制白卡
和名字一样,复制卡的载体
实验步骤读取IC卡
卡片放上去,然后运行一下M1卡服务程序就行,对应的程序我会放到后面的
它会生成下面的文件
这个文件可以转换为TXT文件来方便我们读取
打开文件分析对应的IC信息,这个IC是学校的水卡里面有49.80元
经过分析第八扇区和第九扇区是对应的金额,我们学校的水卡有点特殊,分为大钱包和小钱包,实验出来第八扇区是大钱包,第九扇区是小钱包,并且具有校验码,我还没有分析出来校验码的规律是什么,最近事情较多,后面再来搞了。
复制IC卡由于没有分析成功校验码,于是我们直接找一张其他白卡写入这个数据,也能实现再生一张卡
用IC克隆工具来克隆,先初始化,然后连接,最后导入对应的dunp文件,点击复制卡就行了
我们就能得到一张新的49.8的水卡了
ICS_CTF竞赛
ICS_CTF竞赛国内工控比赛考察点采用 CTF 分类模型,总结分析当前工控 ICS 比赛中的关键点
比赛类型
考察点
与 CTF 异同
内网渗透
Web 端渗透测试、CMS 系统、工控发布展示系统、数据库系统
与 Web 渗透相关
逆向分析
固件分析、工控软件逆向
实际场景逆向
工控协议
工控流量分析、Misc 类
Misc 流量分析,工控场景流量特征
工控编程
PLC 编程、HMI 组态、RTU 编程等
工控实际组态软件使用,梯形图识别与分析
根据漏洞类型其实还可以区分细化题目类型,包括常见的 Web 注入类、固件弱口令、后门程序、协议重放与逻辑问题、组态部署问题等常见的工控场景安全问题。
比赛类型
漏洞类型
内网渗透
Web 类(SQL、XSS、命令注入、敏感文件泄露 .git/.idea/.project 等、)
逆向分析
固件分析、工控软件逆向
工控协议
工控流量分析、Misc 类
工控编程
PLC 编程、HMI 组态
针对目前出现或曾经出现的 ICS CTF 题目类型,其实与 CTF 竞赛有许多重合点,因此不再此赘述, ...
ICS_CTF 学习资源 ¶
ICS_CTF 学习资源
EscortLab 收集整理了一系列相关关 IoT 资料,供大家学习
IoT 产业资讯 https://www.iotdunia.com/iotdunia
利用框架
isf 利用框架 https://github.com/dark-lbp/isf
isf 利用框架 https://github.com/w3h/isf
整理 ICS 资源
icsmaster https://github.com/w3h/icsmaster
rapidscada https://github.com/RapidScada/scada
弱口令集合
工控弱口令 https://github.com/scadastrangelove/SCADAPASS
TOP1 万内系列弱口令 https://github.com/danielmiessler/SecLists/tree/master/Passwords
蜜罐 honeypot
Conpot https://github.com/mushorg/conpot
利用小工具
PLC 扫描发现工具 PLCscan https:// ...
ICS_CTF 发现
ICS_CTF 发现工控设备发现工控设备发现是工控比赛的前提,目前针对工控设备扫描中,在 Nmap、Metasploit、Censes 集成了大量的工具,用于挖掘当前在线 PLC、DCS 等 ICS 设备。
工控扫描脚本基于工控端口的信息扫描脚本在大量 IP 中如何发现工控设备, 除了工控特殊端口意外,大量端口都是正常服务,例如 ftp、ssh、telnet、smtp、ntp 等正常网络服务。下面列表列举了当前可以利用开源工控扫描脚本。
端口
协议 / 设备
来源
102(TCP)
siemens s7
nmap –script s7-info.nse -p 102 [host] nmap -sP –script s71200-enumerate-old.nse -p 102 [host]
502(TCP)
modbus
nmap –script modicon-info -p 502 [host]
2404(TCP)
IEC 60870-5-104
nmap -Pn -n -d –script iec-identify.nse –script-args& ...
ICS_CTF 利用
ICS_CTF 利用Exploit 是针对某种漏洞提供的多种利用方法,针对某一种漏洞可以有很多利用方法。 针对工控领域,其实目前多见的利用方式:组态利用、通信劫持、Web 渗透。
组态利用组态是工控场景的核心,是工控编程与实现功能的核心内容,如果你不太懂组态,请自行学习自动化领域工业控制系统组态的相关书籍。 最好的学习方式是拿到相关的产品说明书,针对说明书上的内容一点一点学习。
组态的利用方法:
强制 IO(最管用的一种调试方法)
工程加密与解密(工程加密是 PLC 一种保护措施,但仍存在被破解的可能)
上载下载(基础概念请自行恶补)
PLC 等目标设备的内存分布(基础概念请自行恶补)
其他附加功能(例如 ftp、ntp 等)
通信劫持通信劫持是工控场景中最经典利用方式,例如 ARP 劫持、PLC/HMI 通信劫持、PLC 会话劫持、PLC 命令执行等内容。 通信劫持的方法:
ARP 劫持,ARP 劫持可以阻断 PLC 与其他设备的通信,鉴于工程会存在写死 IP 等交互地址,未必管用,但是值得一试
PLC/HMI 通信劫持,采用旁路设备接入或控制 PLC 设备 ...
House Of 系列简介
House Of 系列简介House Of SpiritHouse Of Spirit 是一种 fastbin attack ,通过利用 free 函数来释放一个 fake chunk,将地址 free 到堆的 bin 链中,然后实现对栈地址的读写实现WAA
保护检查
fake chunk 的 ISMMAP 位不能为 1,因为 free 时,如果是 mmap 的 chunk,会单独处理
fake chunk 地址需要对齐, MALLOC_ALIGN_MASK
fake chunk 的 size 大小需要满足对应的 fastbin 的需求,同时也得对齐
fake chunk 的 next chunk 的大小不能小于 2 * SIZE_SZ,同时也不能大于av->system_mem
fake chunk 对应的 fastbin 链表头部不能是该 fake chunk,即不能构成 double free 的情况
主要是:当前chunk的size(chunk->size),和下一个chunk的size(nextchunk->size)
利用条件
可以控制 free 的 ...