RHG赛制
RHG赛制做题技巧静态编译的题目的ropchain
1ROPgadget --binary r2 --ropchain
工具和资源汇总2022网鼎赛制介绍
https://g.ichunqiu.com/wdsignup/static/resources/pdfs/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%BC%8F%E6%B4%9E%E6%8C%96%E6%8E%98%E8%B5%9B%EF%BC%88RHG%EF%BC%89%E8%B5%9B%E5%88%B6%E7%BB%86%E5%88%99.pdf?v=20230301
libc符号表
https://github.com/push0ebp/sig-database
i春秋的智能自动挖洞机器人
https://github.com/thinkycx/rhg2018-robot
BCTF的Autopwn
https://github.com/0xaww/RHG-AutoPwn-Robot
网鼎杯题解
https://cn-sec.com/archives/1676819.html
符号信息 ...
RFID第一期——各种IC卡ID卡详解
RFID第一期——各种IC卡ID卡详解RFID师傅博客地址:https://lmark.cc/
前置知识先给大家捋清楚几个不同的名词:ID卡,IC卡,RFID卡,CPU卡,m1卡,MF1卡,UID卡,CUID卡等。
看到这对名词想必大家头都大了,但是,今天我就带大家搞清楚这每一个名词的意思,以及目前市面上比较常见的卡的类型的介绍。
RFID卡和IC卡首先,大家需要知道的一个名词是:RFID
这是什么意思?我摘抄了Wiki上的介绍,帮助大家理解:射频识别 - 维基百科,自由的百科全书 (wikipedia.org)
射频识别(英语:Radio-frequency identification,缩写:RFID)是一种无线通信技术,可以通过无线电信号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或者光学接触。
无线电的信号是通过调成无线电频率的电磁场,把数据从附着在物品上的标签上传送出去,以自动辨识与追踪该物品。某些标签在识别时从识别器发出的电磁场中就可以得到能量,并不需要电池;也有标签本身拥有电源,并可以主动发出无线电波(调成无线电频率的电磁场)。标签包含了电子储存的信 ...
RE—攻防世界—流浪者
RE—攻防世界—流浪者看文件图标就知道这和MFC有关,没有加壳和反调试混淆。
MFC微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了[Windows API](https://baike.baidu.com/item/Windows API/6088382),并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
其实MFC就是一个对C++语言的封装,用来减小开发人员工作量。
分析那到手是一个exe文件,试运行一下,就是一个输入密码的题,MFC编写的程序比单纯的控制台程序更难分析。
由于不知道exe的入口函数是什么,我们可以去找到判断密码正确与否的函数,最简单的办法便是字符串的交叉引用。Shift+F12可以查看程序的字符串。
其中pass!在我们输入的时候没有出现。
交叉引用后反编译查看源代码
发现是程序通过会出现的界面。
于是跳转到call了该函数的函数那里 ...
ret2dlsolve漏洞的复现
ret2dlsolve漏洞的复现前言为了学到更多的关于ROP利用的知识开始复现这个漏洞,也为了能够更加深刻的了解程序动态链接的过程,学习更加底层的知识。
原理在Linux中,程序使用_dl_runtime_resolve(link_map_obj,reloc_offset)来对动态链接的函数进行重定位。那么如果我们可以控制相应的参数及其对应地址的内容是不是就可以控制解析函数了呢?答案是肯定的。这也就是ret2dlresolve攻击的核心所在。
具体的,动态链接器在解析符号地址时所使用的重定位表项,动态符号表,动态字符串表都是从目标文件中的动态节.dynamic索引得到的。如果我们能够修改其中的某些内容使得动态链接器解析的符号是我们想要解析的符号,那么攻击就达成了。
思路一 – 直接控制重定位表项的相关内容由于动态链接器最后在解析符号的地址时,是依据符号的名字进行解析的。因此,一个很自然的想法是直接修改动态字符串表.dynstr,比如把某个函数在字符串表中对应的字符串修改为目标函数对应的字符串表。但是动态字符串表和代码映射在一起,是只读的,此外,类似地,我们可以发现动态符号表,重定位表项 ...
ret2csu原理与利用
ret2csu原理与利用原理
在 64 位程序中,函数的前 6 个参数是通过寄存器传递的,但是大多数时候,我们很难找到每一个寄存器对应的 gadgets。 这时候,我们可以利用 x64 下的 __libc_csu_init 中的 gadgets。这个函数是用来对 libc 进行初始化操作的,而一般的程序都会调用 libc 函数,所以这个函数一定会存在。我们先来看一下这个函数 (当然,不同版本的这个函数有一定的区别)
123456789101112131415161718192021222324252627282930313233343536373839404142.text:00000000004005C0 ; void _libc_csu_init(void).text:00000000004005C0 public __libc_csu_init.text:00000000004005C0 __libc_csu_init proc near ; DATA XREF: _start+16o.text:0000000000 ...
RELRO保护原理
RELRO保护原理简介由于 GOT和PLT以及延迟绑定的原因,在启用延迟绑定时,符号解析只发生在第一次使用的时候,该过程是通过PLT表进行的,解析完成后,相应的GOT条目会被修改为正确的函数地址。因此,在延迟绑定的情况下。.got.plt必须可写,这就给了攻击者篡改地址劫持程序的执行的可能。
RELRO(ReLocation Read-Only)机制的提出就是为了解决延迟绑定的安全问题,它最初于2004年由Redhat的工程师Jakub jelnek实现,他将符号重定位表设置为只读,或者在程序启动时就解析并绑定所有的动态符号,从而避免GOT上的地址被篡改。RELRO有两种形式:
partial PELRO:一些段(包括.dynamic,.got等)在初始化后会被标记为只读。在unbuntu16.04(GCC-5.4.0)上,默认开启Partial RELRO。
**Full RELRO **:除了Partial RELRO,延迟绑定将被禁止,所有的导入符号将在开始时被解析,.got.plt段会被完全初始化为目标函数的最终地址,并被mprotect标记为只读,但其实.got.plt会被 ...
Reaver跑pin码+Mdk3无线攻击笔记
Reaver跑pin码+Mdk3无线攻击笔记Reaver跑pin码破解wifiPIN码共分为8位,按 4 3 1分段,总共穷举有11000种组合。通过获取到PIN码,并记住Bssid和PIN,后期可以通过一条命令爆出无线密码。
容易碰到的问题:连接超时,卡住,路由自保护等
首先启动网卡
嗅探模式
查看MB有没有能破解的WiFi
MB是54e.的可破解,54e不可破解。这个我这没有显示,但我还是尝试跑了一下,依旧是自家的701;
开始破解跑PIN1reaver -i wlan0mon -b DC:72:9B:9B:65:F4 -vv
最终可以得到wifi的PIN码和密码,把他们记下来。如果wifi主人过段时间更改密码(一般来说不会改PIN码),这时只需加上-p命令,WiFi密码即可破出;
1reaver -i wlan0mon -b MAC地址 -p PIN码
此方法受信号强度和WPS保护机制等影响,破解需要很长时间,容易连接超时。
Mdk3无线攻击1、伪造AP攻击无线黑客通过创建大量虚假AP基站信号来干扰正常无线通信。可以使用mdk3这款工具实战,通过无线网卡发射伪造的AP ...
Qemu 模拟环境
Qemu 模拟环境这一章节主要介绍如何使用 QEMU 来搭建调试分析环境。为了使用 qemu 启动和调试内核,我们需要内核、qemu、文件系统。
准备内核这个在之前已经编译完成了。
QEMU关于 QEMU 的介绍与安装请参考 ctf-tools。
文件系统这里我们使用 busybox 来构建一个简单的文件系统。
下载编译 busybox下载 BUSYBOX12❯ wget https://busybox.net/downloads/busybox-1.32.1.tar.bz2❯ tar -jxf busybox-1.32.1.tar.bz2
配置1❯ make menuconfig
在 Setttings 选中 Build static binary (no shared libs),将 busybox 编译为静态链接的文件;在 Linux System Utilities 中取消选中 Support mounting NFS file systems on Linux < 2.6.23 (NEW);在 Networking Utilities 中取消选中 inetd。
编译 ...
Python迭代器与成器
Python迭代器与成器迭代器核生成器算是Python一大特色,其核心是基于迭代器协议来的。
而平时我们经常使用的for in循环体,本质就是迭代器协议的一大应用。
同时Python内置的集合类型(字符,列表,元组,字典)都已经实现了迭代器协议,所以才能使用for in 语句进行迭代遍历。for in 循环体在遇到 StopIteration异常时,便终止迭代和遍历。
再说下可迭代,迭代器,生成器三个概念的联系和区别。
可迭代概念范围最大,生成器和迭代器肯定都可迭代,但可迭代不一定都是迭代器和生成器,比如上面说到的内置集合类数据类型,可以认为,在Python中,只要有集合特性的,都可以迭代。
迭代器,迭代器的特点是,均可以使用for in 和next逐一遍历。
生成器,生成器一定是迭代器,也一定可迭代。
至于Python中为何要引入迭代器和生成器,除了节省内存空间外,也可以显著提高代码运行速度。
迭代器迭代是python最强大的功能之一,是访问集合元素的一种方式。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往 ...



