ROP合集

ROP-ret2libc

环境:glibc 2.31 Ubuntu20.04

源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// gcc -O0 -fno-stack-protector ret2libc.c -no-pie -o retlibc
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

void print_name(char *input)
{
char buf[0x20]; // strcpy(buf, input);
memcpy(buf, input, 0x100);
printf("Hello %s\n", buf);
}

int main(int argc, char **argv)
{
char buf[0x100];
puts("welcome to stack5");
printf("Here is a gift: %p\n", stdout);
puts("input your name plz");
read(0, buf, 0x100);
print_name(buf);
return EXIT_SUCCESS;
}

stdout ??

C语言中的 stdout 是一个定义在<stdio.h>的宏(macro),它展开到一个 FILE* (“指向 FILE 的 指针”)类型的表达式(不一定是常量),这个表达式指向一个与标准输出流(standard output stream)相关连的 FILE 对象。 只是方便操作输出,比如传给一个函数等等。这时函数的输出就不是输出到文件,而是传进来的 stdout文件指针,即标准输出。

stdout(Standardoutput)标准输出 stdin(Standardinput)标准输入 stderr(Standarderror)标准错误 接下来我们debug一下文件 文件会给我们stdout的地址而且每次都会变化 libc是c函数库它会被加载在进程空间 运行后产看内存
之前介绍过了gdb 与 pwndbg,这里做pwn题目演示就用pwndbg了
pwngdb在调试对调试堆的数据结构时候很方便
peda在查找字符串等功能时方便

安装pwndgb
1
2
3
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
sudo ./setup.sh

切换:

vim ~/.gdbinit

image1注释掉peda 保存

首先先gdb调试启动程序
gdb -r ret2libc

r

先查看下内存

vmmap

image2

其中后缀为.so文件为libc 虽然地址每次都会变化但是它的偏移量是不会变化的 我们先调试一下 我们先下一个断点在printf

…ToDo….

Pwn 学习 旧知新学

📅日期 2021年8月22

  • Kernel pwn
  • mips pwn
  • iot pwn
  • arm pwn
  • Blind Pwn
  • ICS Pwn

11月24重新绑定域名 设置主题

一直在工作💼

后期应该会陆续慢慢更新

主要为 移动安全 二进制安全 pwn相关的学习笔记📒

Read more »

📅2020 年12 月 10 日

1.pwn题目复现 上传hub (已重写wp上传hub1道 )

2.hub上pwn题目审核5道 (完成审核 6 道)

3.逆向基础学习《逆向工程权威指南 3.5》

《Linux二进制分析》ELF加壳保护技术 stub机制 p310-330✅

《黑客攻防技术宝典第2版系统实战篇》.((英) Chris Anley Part 1部分✅

📅2020年12月15日

今日工作:

- 移动安全两道题目上传hub
- hacknote 复现 UAF pwnable.tw
- USENIX Security计算机安全顶会Linux内核ret2dir(return-to-direct-mapped memory) paper阅读 5%

📅2020年12月16日

Walking away from abusive people and destructive environments will protect your self-respect and integrity.

远离恶语之人和不良环境,才能保持自尊与高尚的情操。

今日工作:

  • pwn题目上传2道

  • ret2dir paper阅读40%

  • 钱林松 华科 逆向分析讲座

📅2021年8月23日