CTF pwn/re手在学习过程中的零碎操作积累

这篇博客记录了CTF Pwn/Re领域的一些技巧和操作,包括如何开启和关闭随机化、使用指定版本的libc、IDApython中patch SMC代码、编写爆破脚本、寻找syscall_ret gadget以及理解C语言中的整型特性。此外,还涉及了逆向迷宫题的输入求解和求解二进制补码的方法。
摘要由CSDN通过智能技术生成

概述

  谨以此片文章为我那不争气的记性做个记录,随便造福大家,另外如果各位看官也有些骚操作或者基操的话,也请不吝赐教,留言评论,在下定临表涕零,感激不尽。

开启和关闭随机化

# sudo su
cat /proc/sys/kernel/randomize_va_space        # 当前值
echo 0 > /proc/sys/kernel/randomize_va_space   # 完全关闭
echo 2 > /proc/sys/kernel/randomize_va_space   # 完全开启

使用指定版本的libc运行pwn题

  这里给几个下libc的网站:

  使用指定版本libc运行pwn题的终端操作:

# 指定libc
$ LD_PRELOAD=/usr/local/libc/libc-2.23.so
# 使用对应的动态链接器运行程序
$ /usr/local/libc/ld-2.23.so ./prog

  利用pwntools指定程序运行的libc:

from pwn import *


libc_path = "/usr/local/libc/libc-2.23.so"
ld_path = "/usr/local/libc/ld-2.23.so"
p = process([ld_path, "./prog"], env={
   "LD_PRELOAD":libc_path})

使用指定版本的libc编译源程序

  操作如下:

  • -o指定生成的程序名
  • -Wl将后面的参数传给链接器
  • --rpath指定libc路径
  • --dynamic-linker指定动态链接器
$ gcc test.c -o test -Wl,--rpath=/usr/local/libc/ -Wl,--dynamic-linker=/usr/local/libc/ld-2.23.so 

IDApython – Patch SMC代码

  IDApython的文档手册 – IDApython手册
  这里记录一下使用IDApython插件patch代码的过程,在逆向过程中经常遇到SMC代码,此时静态分析的话我们可以用下面的示例脚本来还原出代码,主要记忆一些api的使用。快捷键shift-f2打开IDA脚本输入框,修改脚本语言为python,如下截图所示,代码也在后面,注释已给。

IDApython


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值