安全措施 程序分析 首先是初始化程序,将 puts 放在了 bss 段 0x4088 的位置,具体查看汇编发现是直接把 puts 的函数地址放进去了。 主程序先接受一个 name 存在 0x4068 位置,然后执行 4 个选项的菜单循环。 选项 1、2、3 分别能够通过 +、-、^ 操作 0x40a0 之前的内存;选项 4 调用 0x4088 位置…
本文详细介绍了安卓逆向工程中的动态调试过程。通过阐述各种工具的使用、动态调试环境的配置、获取debug权限、端口转发以及开启adb调试权限、下断点和使用Jeb附加调试进程等步骤,为您提供了一份详尽的动态调试教程。
安卓应用中常见有三种广告:启动广告、弹窗广告以及横幅广告。启动广告一般是单独的一个 Activity,对于这种广告可以通过 Activity 切换定位来加以去除。弹窗广告一般是在 Activity 方法中通过 Dialog->show() 方法调用的,这种广告可以通过 Hook、定位并修改代码方法去除。横幅广告是出现在 UI 布局中的广告,在 xml 中定位到之后可以通过修改宽高和可见性的方法去除。
Linux 有一套规则来命名系统中的每一个共享库,它规定共享库的文件命名规则如下:libname.so.x.y.z,即前缀"lib"+库名称+后缀".so"+三个数字组成的版本号,其中,x 表示主版本号,y 表示次版本号,z 表示发布版本号。SO-NAME 命名机制,就是把共享库的文件名去掉次版本号和发布版本号,只保留主版本号。在 Linux 系统中,系统会为每个共享库在它所在的目录创建一个跟它的 ”SO-NAME” 一样的软链接指向它。
思路 已知e,P,Euler(Q),c,n.求m. P = p**3 分解P,得到p Q = q**2 根据欧拉函数性质,可知 Euler(Q) = q*(q-1) 分解phi_Q得到一个大因数,这个数比剩下的因数乘积大很多,所以可以推断这个大因数应该不是q,但是是q的倍数。 n = p*q*r q*r = n/p 可知q*r的值,对phi_Q求公…
思路 通过输出printf地址泄露libc 覆盖printf地址为system 输出/bin/sh 分析 检查安全措施,没有PIE和canary [*] '/mnt/e/sec/bugku/pwn/repeater/pwn7' Arch: i386-32-little RELRO: Partial RELRO Stack: No…
思路 列出可用集,根据可用集逐步构造出全指令集 根据可用集逐步编码shellcode 看了别的师傅有很巧妙的做法:不直接调shell,而是先手写调read,然后输入真正的shellcode,绕过检测。 我这里主要借机学习一下shellcode编码,就按官方思路复现了。 指令集扩展 shellcode字符集 编写一个基础的shellcode: mov…
shellcode原理 系统调用execve("/bin/sh", 0, 0) 具体可以参考系统调用表、64位linux中断向量表 64位 寄存器: rax = 0x3b rdi = "/bin/sh" rsi = 0 rdx = 0 一段简单的 shellcode: mov rax, 0x68732f6e6…
这题拖了挺久的,因为一些知识点还不是很明白。 分析过程 checksec 保护全开 [*] '/mnt/e/sec/dasctf/ez_note/pwn' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE ena…
在glibc源码中搜索split可以找到堆块切割相关源码 在malloc.c的_int_malloc函数中发生堆块切割的情形如下: 遍历unsorted chunks时 请求满足small request last remainder 堆块是唯一堆块,且切割后剩下的仍然满足最小堆块大小 从largebin中找到最小的满足要求的堆块 切割后剩余堆块的…