文章列表

4.4k 4 分钟

# Blockchain 解题入门 写在前面:近年来 Blockchain 在 CTF 比赛中的出现频率越来越高,并且相比于其他方向,Blockchain 在解题入门方面的教程还比较少,对于新手来说可能连题目都看不懂,本文以 Chainflag 平台为例,简单介绍了 Blockchain 方向题目的解题步骤。 智能合约语言目前以 Solidity 为主,除此以外,还有 Vyper、Mandala 和 Obsidian 等在不同方向改善智能合约的语言。 # 一些工具 这里主要写一下解题时需要用到的一些工具。 # IDE Solidity...
3k 3 分钟

# Off by null # 原理 ​ 在读入数据的时候,对数据长度的检查不严谨,导致了一个 NULL 字节的溢出。在堆块 size 为 0x100 时,溢出 NULL 字节会导致 prev_inuse 位被清零,该堆块的前一个堆块会被认为是 free(未分配)状态。因此可以通过 unlink 实现任意地址写,或者伪造 prev_size 达到 UAF 的效果。 # 流程 开辟三个堆块分别为 chunk0、chunk1、chunk2。 编辑 chunk1,输入特定数据使其溢出一个 NULL(\x00)字节,覆盖 chunk2 的 prev_inuse 位为 0,这时 chunk1...
3.4k 3 分钟

# 堆 目前 Linux 标准发行版中使用的堆分配器是 glibc 的堆分配器:ptmalloc2,主要通过 malloc/free 来分配和释放内存块。 不同的线程维护不同的堆称为:per thread arena。 主线程创建的堆称为:main arena。 # chunk 结构 我们一般称 malloc 出来的内存块为 chunk,这个内存块在 ptmalloc 用 malloc_chunk 结构体表示。 结构体定义: /* This struct declaration is misleading (but accurate and necessary). It declares a...
7.1k 6 分钟

# 2019 强网杯 babybank # 题目信息 Get the flag after payforflag event is emitted 0xd630cb8c3bbfd38d1880b8256ee06d168ee3859c@ropsten 在执行完 payforflag 函数后获取 flag,并且给出了题目合约的地址。 同时给出部分合约源码 pragma solidity ^0.4.23;contract babybank { mapping(address => uint) public balance; mapping(address =>...
11k 10 分钟

# IO_FILE # 结构体及部分函数源码分析 # FILE 结构体 FILE 结构定义在 libio.h 中 struct _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_ptr and _IO_read_end...
4.9k 4 分钟

# 前言 我本身并不是学习 web 方向的,所以这里也只是收集整合了一些资料,简单介绍一下 web 方向的学习内容。 web 安全的内容相对较多,任何一个知识面都是永无止境的,web 安全前期尽量做到提升自己的攻击面 (广度),然后再选择一个自己喜欢 or 擅长的方向进行深入学习。不建议专攻开发再转安全,因为单单是 web 安全方向就很广,并且新技术迭代的很快,一味地学习开发的知识效率并不高,而是讲究循序渐进地学习。 比如说在学习一个漏洞的时候,先了解该漏洞需要哪些基础知识,再去专项学习有关的开发知识。在学习的过程中也需要有所取舍,比如我就是想要 JAVA 安全, PHP...
7.2k 7 分钟

# 前言 我本身并不是学习密码学方向的,所以这里也只是收集整合了一些资料,简单介绍一下密码学方向的学习内容。 纯粹密码学的考题,在 CTF 中会划分到 Crypto 中,有时也会被归于 MISC 的一种,有时会与 PWN、REVERSE 类型的题目相结合。且题目也趋向于前沿化、论文化。 与其它方向相比,Crypto 对自身的数学功底要求很高,很大程度上密码学的难点都是数学问题,尤其是数论的内容一定要掌握。 # 0x00 安全素养 # 网络安全法 不要违法,不要违法,不要违法。 参考资料 https://baike.baidu.com/item/ 中华人民共和国网络安全法 # 0x01 基础 #...
9.8k 9 分钟

# 0x00 安全素养 # 网络安全法 不要违法,不要违法,不要违法。 参考资料: https://baike.baidu.com/item/ 中华人民共和国网络安全法 # 0x01 基础 编程和逆向工程的能力是相当重要的。 # 编程语言功底 精通 C 语言(指针、函数)、C++ 汇编语言(熟悉常见指令及寄存器等,能够熟练阅读汇编代码) 熟练使用 python # 逆向功底 & 底层原理 IDA PRO 的使用(或者 Ghidra 等其它工具) gdb...
3.9k 4 分钟

# 环境搭建 # 虚拟机安装 安装 VMware Workstation PRO 下载 Ubuntu 镜像 https://ubuntu.com/download/desktop 多个版本,选择 Ubuntu 20.04.3 LTS 即可 打开 VMware Workstation PRO,选择创建新的虚拟机。 选择下载的 Ubuntu 镜像 输入用户名和密码(自定) 设置虚拟机安装位置(一般在 D 盘新建一个文件夹专门放虚拟机) 后面全部性能设置默认就好 安装完成后,输入之前设置的密码登录,弹窗全部跳过即可。 # 虚拟机配置 # 1. 换源 因为 Ubuntu...
3.5k 3 分钟

# 重入攻击(Re-Entrancy) # 前置 # 原理 ​ 以太坊智能合约能够调用其他外部合约的代码。而这些合约通常也处理以太币,在调用外部合约时,会要求合约提交外部调用,这些外部调用就可以被攻击者劫持。 ​ 可以通过 fallback 回退函数使合约执行更多的代码,包括回调原合约本身。因此重入攻击有点像间接调用递归函数。 ​ 攻击合约可以回调合约上的一个函数,重新进入合约上的任意位置的代码并执行,如果没有防御措施,合约中的函数可能会被多次执行。 # 大致操作 ​ 攻击者在外部地址部署攻击合约,并在该合约写入包含 fallback...