首先简要回顾一下缓冲区溢出的攻击大系: ◆栈溢出(stack smashing) 未检查输入缓冲区长度,导致数组越界,覆盖栈中局部变量空间之上的栈桢指针%ebp以及函数返回地址retaddr,当函数返回执行ret指令时,retaddr从栈中弹出,作为下一条指令的地址赋给%eip寄存器,继而改变原程序 ...
分类:
其他好文 时间:
2020-02-23 22:35:56
阅读次数:
91
aes加密定位到:fridaJava.perform(function(){varhook=Java.use("com.forward.eip.app.util.a.a");hook.AES_Encode.implementation=function(arg1,arg2){console.log("content:",arg1);console.log("key:",arg2);varres=t
分类:
其他好文 时间:
2020-02-22 23:33:45
阅读次数:
85
除了jmp call ret指令jcc也可以修改eip指令 与其他不同的是,jcc是有条件修改eip指令 1.JE,JZ 2.JNE,JNZ 3.JS 4.JNS 5.JP,JPE 6.JNP,JP0 7.J0 8.JN0 9. 10. 1.CF(Carry Flag) 进位标志 判断无符号数整型计 ...
分类:
其他好文 时间:
2020-02-21 20:33:56
阅读次数:
111
一.简单认识JCC指令(也可以改EIP的寄存器但得看条件) 由下图可以看出JCC指令和很多标志寄存器有关 标志寄存器的不一样也就表示JCC指令的含义不同 所以 学习JCC指令实际上是学习标志寄存器 二.标志寄存器(32位) 2.1 CF位(判断无符号数运算之后结果有没有溢出) 当无符号数发生进位或借 ...
分类:
其他好文 时间:
2020-02-10 22:28:12
阅读次数:
204
get_started_3dsctf_2016 Pwn 这个题确实有点坑,在本地能打,在远程就不能打了,于是我就换了另一种方法来做. 确这个题是没有动态链接库,且PIE是关的,所以程序的大部分地址已经定死了,帮了大忙了. 第一个本地能打通的思路(远程打不了) 修改eip跳转到get_flag函即可, ...
分类:
其他好文 时间:
2019-12-29 00:27:58
阅读次数:
219
xctf - stack2 文件check一下,几乎全开了 运行一下程序,好像很正常呢: 再来一个大的,好像有点儿问题,变1.00了 在ida中查看,在输入的时候没有检查数据大小 可以通过劫持eip获取shell。程序偏移0x84,程序中读取了低位,需要逐位添加地址 system(‘/bin/bas ...
分类:
其他好文 时间:
2019-12-13 10:45:10
阅读次数:
104
stack pivoting 翻为堆栈旋转 操作是利用' jmp esp' 控制程序流程 X-CTF Quals 2016 - b0verfl0w 可以溢出并且没有开启NX 但是这里只允许溢出14位 很难进行rop 那么可以在栈上布置shelcode 现在的目标就是让eip跳到栈上shelcode位 ...
分类:
其他好文 时间:
2019-11-24 11:38:41
阅读次数:
96
注意:cr3 切换 ,导致eip 指向的页面,改变为对应cr3 的页面;所以代码也变了;这里需要将这部分代码放入公共区域。解决:使用 类似前面 山寨 systemfastcallentry 的方法;使用 int 20 将代码拷贝到 高2gb 公共区域。 注册到 int 21,然后中断调用即可。 ...
分类:
系统相关 时间:
2019-10-22 14:45:54
阅读次数:
95
简单介绍了,JMP指令按市面上的意思来说是跳转到指定地址,但我这里不这么说,JMP, CALL, RET三个指令均为修改EIP值的指令,EAX, ECX, EBX, EDX, ESP, EBP, ESI, EDI,这8个寄存器的值均可以用mov指令来修改里面的值,EIP行不行呢?我们实际测试一下。 ...
分类:
其他好文 时间:
2019-09-06 01:19:52
阅读次数:
148
栈溢出是缓冲区溢出中最为常见的一种攻击手法,其原理是,程序在运行时栈地址是由操作系统来负责维护的,在我们调用函数时,程序会将当前函数的下一条指令的地址压入栈中,而函数执行完毕后,则会通过ret指令从栈地址中弹出压入的返回地址,并将返回地址重新装载到EIP指令指针寄存器中,从而继续运行,然而将这种控制 ...
分类:
其他好文 时间:
2019-08-30 14:01:22
阅读次数:
168