Blog

A lonely fisherman afloat.Is fishing snow in lonely boat.

Off-By-One 漏洞(基于栈)

字符串末尾的Null造成Off-By-One 漏洞

0.前言 当源字符串长度等于目标缓冲区长度时,单个NULL字节将被复制到目标缓冲区上方。这里由于目标缓冲区位于堆栈中,所以单个NULL字节可以覆盖存储在堆栈中的调用者的EBP的最低有效位(LSB),这可能导致任意的代码执行。 简单地说就是因为字符串最后有一个不可见字符“\n”,会对缓冲区外的栈中的数据的最后一个字节覆盖,无论其中数据为任何值,最后一个字节都将被复改为00,举个例子,如果buf...

整数溢出

整数溢出会导致堆栈溢出或堆溢出

0.前言 存储大于最大支持值的值称为整数溢出。整数溢出本身不会导致任意代码执行,但整数溢出可能会导致栈溢出或堆溢出,这可能导致任意代码执行。本次讨论栈溢出。常见的数据类型大小及范围 如果想让255存储于无符号的char类型时,它是可以正常存储的,在正常范围之内。但是如果想要存储256,它会被存储为0,同样的257,会存储为1,这就是整数溢出,可能导致任意代码执行。 类似地,存储小于最...

基于栈的缓冲区溢出

缓冲区溢出导致任意代码执行

0.前言 缓冲区溢出有两种:栈溢出和堆溢出。将源缓冲区复制到目标缓冲区,可导致源字符串长度大于目标字符串长度,造成输入的数据覆盖了正常代码。同时,如果使用精心构造的代码覆盖正常代码,可以导致程序执行流程的改变,从而导致任意代码执行,例如,将返回值返回到一个shell,获得系统的root权限,造成危害。 1.环境及工具 虚拟机环境:Ubuntu 12.04 Desktop(x86) 工具:gd...

吾爱破解论坛春节红包活动——第二题解题思路

CrackMe类型,难度不大

0.前言 这题早就做出来了,一直拖着不想写wp,来学校才能静下心来写点东西。 1.简单分析 下载运行,随便输入一些字符串,结果如下图 提示长度错误。 然后查一下壳,结果如下: UPX壳,直接使用peid的插件脱掉upx壳 2.ida分析 将脱壳后的软件拖入ida,查看程序大致流程。 具体的追踪流程为:winmain窗口——>调用DialogBoxParamA函数——>...

区块链基础与应用

本文是对于区块链技术的学习与认识,不定时更新

0.前言 本文为区块链的学习笔记,主要参考来源为北京大学肖臻老师《区块链技术与应用》公开课的比特币部分,链接https://www.bilibili.com/video/av37065233/?p=1这门公开课使我获益匪浅,非常感谢老师的讲授! 比特币(BitCoin)的概念最初由中本聪在2009年提出,包括根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P(P...

2016kxctf第16题

2016kxctf第16题

0.前言 首先应该知道虚拟机的一些基本知识,参考1 然后使用动态调试。 1.脱壳 1.1 od附加调试 这个程序无法直接将程序拖入od调试,因为作者在题目中说了加了壳,而且直接拖入之后,会弹窗不允许反调试,附加进程进行调试可以有效的避免AntiDebuggers检测。具体方法: 1.双击运行程序。 2.file——>attach——>找到运行的程序进程 1.2 脱壳 1....

虚拟机保护机制与简单设计

虚拟机保护机制与简单设计

0.前言 虚拟机保护技术,是将程序可执行代码转化为自定义的中间操作码(OperationCode),如果操作码是一个字节,一般可以称为字节码(Bytecode)。 划重点:x86的汇编指令是在cpu里执行的,而字节码指令系统是通过解释指令执行的。 1. 原理 一个简单的虚拟机原理的应用如下: __int64 sub_4005B6() { unsigned int v0; // ST04_...

2016kxctf第7题

2016kxctf第7题

0.前言 本题是一个通过seh执行关键代码的题目,关于seh,参考 http://gxkyrftx.xyz/2019/01/07/SEH%E5%AD%A6%E4%B9%A0/ 其实类似于前面提到的tls,都差不多,大概理解即可,seh的重点是分析其跳转到的核心代码,分析其调用的程序。 1.流程分析 ida动态调试 1.1 主函数 int __cdecl main(int argc, cons...

SEH机制学习

SEH机制学习

0.SEH简介 SEH(“Structured Exception Handling”),即结构化异常处理·是windows操作系统处理程序错误或异常的技术。SEH使windows操作系统的一种系统机制,与特定的程序设计语言无关。 1.中断与异常 中断:外部硬件设备或者异步产生 异常:内部事件产生,分为故障(可恢复)、陷阱(可恢复)、终止(不可恢复,系统必须重启) # 2.产生异常 硬件异...

2016kxctf第19题

2016kxctf第19题

0.前言 1.程序分析 1.0 关闭aslr 方法使用CFF,具体操作见 http://gxkyrftx.xyz/2019/01/04/2016kxctf%E7%AC%AC28%E9%A2%98/ 中的1.0 1.1 main 比较短,就直接放出来了 n_8v1 = 0; v0 = 65; v1 = "A324F100182D501F6F6F78F397A3AA59641023D...