Patchelf 的几种用法

替换的必要性

在做题的时候能够保证本地的版本和远程一致非常重要,和远程一致可以保证不修改脚本也能进行攻击远程。不过还是要注意 libseccomp.so.2 这个文件,如果使用了这个文件来开保护沙箱,那么会在程序中创建各个堆块,这可能会导致远程和本地的堆空间的布局不一致。

X86_64汇编语言:标志位和条件跳转指令

这几个东西,当初学汇编的时候没咋认真看,今天整理一下。

在 RE 的 VM 里或者 PWN 的 Fix 里用到都蛮多的。

标志位

  1. 进位标志 CF (Carry Flag)
  2. 零标志 ZF (Zero Flag)
  3. 符号标志 SF (Sign Flag)
  4. 奇偶标志 PF(Parity Flag)
  5. 溢出标志 OF (Overflow Flag)
  6. 辅助进位标志 AF(Auxiliary Flag)
  7. 方向标志 DF(Direction Flag)
  8. 中断允许标志 IF(Interrupt Flag)
  9. 陷阱标志 TF(Trap Flag)

条件跳转指令表

指令助记符检查标记位说明比较类型
JZZF == 1等于 0 则跳转无符号比较
JEZF == 1相等则跳转无符号比较
JNZZF == 0不等于 0 则跳转无符号比较
JNEZF == 0不相等则跳转无符号比较
JSSF == 1符号为负则跳转有符号比较
JNSSF == 0符号为正则跳转有符号比较
JP/JPEPF == 1“1”的个数为偶数则跳转无符号比较
JNP/JPOPF == 0“1”的个数为奇数则跳转无符号比较
JOOF == 1溢出则跳转有符号比较
JNOOF == 0无溢出则跳转有符号比较
JCCF == 1进位则跳转无符号比较
JBCF == 1小于则跳转无符号比较
JNAECF == 1不大于则跳转无符号比较
JNBCF == 0不小于则跳转无符号比较
JAECF == 0大于等于则跳转无符号比较
JBECF == 1 or ZF == 1小于等于则跳转无符号比较
JNACF == 1 or ZF == 1不大于则跳转无符号比较
JNBECF == 0 or ZF == 0不小于则跳转无符号比较
JACF == 0 or ZF == 0大于则跳转无符号比较
JLSF != OF小于则跳转有符号比较
JNGESF != OF不大于则跳转有符号比较
JNLSF == OF不小于则跳转有符号比较
JGESF == OF大于等于则跳转有符号比较
JLEZF != OF or ZF == 1小于等于则跳转有符号比较
JNGZF != OF or ZF == 1不小于则跳转有符号比较
JNLESF == OF and ZF == 0不小于等于则跳转有符号比较
JGSF == OF and ZF == 0大于则跳转有符号比较

House of Emma

House OF Emma

00 前言

在 2021 年 8 月 1 号发布的 GLIBC2.34 版本中,有两个在 CTF 的 Pwn 题中常用的 Hook —— __free_hook 、 __malloc_hook 被取消,同时在有些题目的限制中,我们无法构造出任意地址申请。

0%