ret2_dl_runtime_resolve

Posted on 2018, Apr2, Monday 23:07:46 • Tagged with pwn, pwn-stack

附录

ret2_dl_runtime_resolve: https://ctf-wiki.github.io/ctf-wiki/pwn/stackoverflow/advanced_rop/


Continue reading

ptmalloc总结

Posted on 2018, Mar22, Thursday 15:09:34 • Tagged with pwn, heap

花了几天看了一下ptmalloc的源码,同时也解答了心中的一些疑惑,一些关键的流程,以及一些利用技巧在这总结一下

malloc

malloc的源码在malloc.c中,推荐搜索注释 —— malloc ,_int_malloc为malloc的本体

malloc流程如下:

// av为当前堆的arean的指针 nb为申请的大小被转换为chunk大小

if (av == NULL) //  如果是main_arean则在第一次malloc就被初始化了,不会在这初始化
  return sysmalloc(nb, av);

if (nb <= global_max_fast) { //global_max_fast是glibc中的一个全局变量
  // 如果有fastbin则脱出fastbin并返回
}

if (in_smallbin_range (nb …

Continue reading

Linux 加载动态链接库原理分析

Posted on 2017, Oct6, Friday 17:39:58 • Tagged with pwn

挖坑待填

从指定目录加载动态链接库

只需要设置 LD_LIBRARY_PATH 这个环境变量即可

若是希望后面的程序都优先从该目录加载,可以执行下面的命令

export LD_LIBRARY_PATH=/home/plusls/Desktop:$LD_LIBRARY_PATH

其中 /home/plusls/Desktop 为so文件所在的目录

注:这样设置后 pwntools 起的进程也会继承该环境变量,加载此libc


Continue reading

shellcode

Posted on 2017, Apr8, Saturday 18:34:51 • Tagged with pwn, pwn-shellcode

在pwn的过程中常常需要通过自己写shellcode来获取shell,本文将介绍几种简单的shellcode
 注:本文以x86为基础

调用系统函数

在开始写shellcode时,首先需要想到,我应该如何调用shell呢?

在写C语言中,通常我们需要调用

system("/bin/sh")

 从而获得shell

在写汇编时,有时候并不需要这么做

linux

在使用linux时写汇编时完全不必再去libc寻找system函数,然后传递参数并且call system,只需要使用 系统调用

先看一段引自wiki的介绍

system call is the programmatic way in …


Continue reading

格式化字符串漏洞

Posted on 2017, Apr8, Saturday 15:34:30 • Tagged with pwn, pwn-format-string

一个坑爹的问题

这个问题与主题没太大关系,还是提一提吧

在ubuntu16.10后 gcc 编译时默认加上了参数-pie,也就是运行地址随机化,可以更好的抵挡攻击,防pwn,但是出题就比较坑爹了

只需要编译时加上参数-no-pie即可

格式化字符串简介

格式化字符串,是一些程序设计语言在格式化输出API函数中用于指定输出参数的格式与相对位置的字符串参数,例如C、C++等程序设计语言的printf类函数,其中的转换说明(conversion specification)用于把随后对应的0个或多个函数参数转换为相应的格式输出;格式化字符串中转换说明以外的其它字符原样输出。

以上摘自wiki:格式化字符串

为了格式化字符串,需要使用占位符用于指明输出的参数值如何格式化 …


Continue reading

使用GDB

Posted on 2017, Apr8, Saturday 15:05:35 • Tagged with pwn, gdb

作为一个pwn选手,一个好的动态调试工具肯定少不了,但是linux下并没有OD这样神奇的东西(edb除外),除了idad的远程调试工具外最好的选择就是gdb了。

1. 安装gdb-peda

在调试的时候,原版的gdb使用起来总感觉不是那么舒服,虽然有layout,但是会有一些奇奇怪怪的问题,这个时候选择一个好用的插件便会方便许多,本文选择的是gdb-peda
安装过程十分简单,以安装在~/peda为例,有别的需求可自己更改

git clone https://github.com/longld/peda.git ~/peda
echo "source …


Continue reading

搭建pwn服务器

Posted on 2017, Mar30, Thursday 01:42:21 • Tagged with pwn, ctf

搭建pwn服务器


Continue reading