MIPS rop gadgets记录贴&&持续更新
前言
本帖记录一些常用的,效果好的 rop gadgets.
uClibc
从栈中设置$t9
并跳到 $t9
的gadgets , __thread_start
函数第二行
使用 案例
使用tips:
- 调用函数时,进入函数内部时要求
$t9
指向函数的起始地址。
lw $t9, arg_0($sp)
jalr $t9
四个组合使用,调用栈中 shellcode 的 rop_gadget , 需要可以控制 $s1
,
详细分析在这里
rop_gadget 1, 设置 参数一 为 1,位于 __uClibc_main
,可以使用 mipsrop.find("li $a0, 1")
查找
LOAD:00055C60 li $a0, 1
LOAD:00055C64 move $t9, $s1
LOAD:00055C68 jalr $t9 ; sub_55960
LOAD:00055C5C lui $s0, 2
rop_gadget 2,从栈中设置寄存器,使用 mipsrop.tail()
查找
LOAD:0001E20C move $t9, $s1
LOAD:0001E210 lw $ra, 0x28+var_4($sp)
LOAD:0001E214 lw $s2, 0x28+var_8($sp)
LOAD:0001E218 lw $s1, 0x28+var_C($sp)
LOAD:0001E21C lw $s0, 0x28+var_10($sp)
LOAD:0001E220 jr $t9
LOAD:0001E224 addiu $sp, 0x28
rop_gadget 3,获取栈地址,使用 mipsrop.stackfinder()
查找
LOAD:000164C0 addiu $s2, $sp, 0x198+var_180
LOAD:000164C4 move $a2, $v1
LOAD:000164C8 move $t9, $s0
LOAD:000164CC jalr $t9 ; mempcpy
LOAD:000164D0 move $a0, $s2
rop_gadget 4,通过 $t9
, 跳转到 $s2
,使用 mipsrop.find("move $t9, $s2")
查找, 位于 readdir
LOAD:000118A4 move $t9, $s2
LOAD:000118A8 jalr $t9
从栈中取数据到寄存器, opendir
函数尾部
.text:0000AA6C lw $ra, 0xC0+var_4($sp)
.text:0000AA70 lw $s2, 0xC0+var_8($sp)
.text:0000AA74 lw $s1, 0xC0+var_C($sp)
.text:0000AA78 lw $s0, 0xC0+var_10($sp)
.text:0000AA7C jr $ra
.text:0000AA80 addiu $sp, 0xC0
.text:0000AA80 # End of function opendir
从栈中设置基本上所有的重要寄存器,位于 scandir
或者 scandir64
尾部
LOAD:00011BB0 lw $ra, 0x40+var_4($sp)
LOAD:00011BB4 lw $fp, 0x40+var_8($sp)
LOAD:00011BB8 lw $s7, 0x40+var_C($sp)
LOAD:00011BBC lw $s6, 0x40+var_10($sp)
LOAD:00011BC0 lw $s5, 0x40+var_14($sp)
LOAD:00011BC4 lw $s4, 0x40+var_18($sp)
LOAD:00011BC8 lw $s3, 0x40+var_1C($sp)
LOAD:00011BCC lw $s2, 0x40+var_20($sp)
LOAD:00011BD0 lw $s1, 0x40+var_24($sp)
LOAD:00011BD4 lw $s0, 0x40+var_28($sp)
LOAD:00011BD8 jr $ra
LOAD:00011BDC addiu $sp, 0x40
LOAD:00011BDC # End of function scandir
MIPS rop gadgets记录贴&&持续更新的更多相关文章
- OpenFlow1.3.3 学习记录(持续更新)
OpenFlow1.3.3 学习记录(持续更新) 正在学习OpenFlow1.3,该篇笔记将日常更新,主要内容大致为官方文档的总结与翻译. 交换机组件 按照优先级顺序进行包匹配,如果匹配到流表项,则执 ...
- .NET6中一些常用组件的配置及使用记录,持续更新中。。。
NET6App 介绍 .NET 6的CoreApp框架,用来学习.NET6的一些变动和新特性,使用EFCore,等一系列组件的运用,每个用单独的文档篇章记录,持续更新文档哦. 如果对您有帮助,点击右上 ...
- Atom使用记录(持续更新中)
部分内容取自:http://www.jianshu.com/p/dd97cbb3c22d,我自己也在使用,持续更新中 Atom安装插件在窗口中File---Setting---install 在里面进 ...
- oracle数据库学习记录(持续更新中...)
--------------------------------------------day1------------------------------------------------- 1. ...
- Laravel 5 使用中的问题记录(持续更新)
1.更新了blade模板却没有更新缓存 通过使用ftp上传文件到服务器,更新了blade模板,却没有更新缓存,经查,原因是系统时间的影响,通过ftp上传的模板文件修改时间与缓存文件的时间不一致,导致模 ...
- Ubuntu系统使用记录(持续更新)
本篇文章记录在虚拟机上跑Ubuntu16.04遇到的一系列问题,熟悉一下Ubuntu的相关操作,进入终端的方法ctrl+alt+t. 1.修改屏幕分辨率,进入系统默认的是800x600 即便能够进入s ...
- C++ 编程技巧笔记记录(持续更新)
C++是博大精深的语言,特性复杂得跟北京二环一样,继承乱得跟乱伦似的. 不过它仍然是我最熟悉且必须用在游戏开发上的语言,这篇文章用于挑选出一些个人觉得重要的条款/经验/技巧进行记录总结. 文章最后列出 ...
- leetcode 刷题记录(java)-持续更新
最新更新时间 11:22:29 8. String to Integer (atoi) public static int myAtoi(String str) { // 1字符串非空判断 " ...
- css高级应用及问题记录(持续更新)
css 参考手册: 1.http://css.doyoe.com/ 1.混合选择器样式定义: .button.icon:before { content: ""; po ...
随机推荐
- WebDriverAPI(5)
将当前浏览器截屏 测试网址 http://www.baidu.com Java语言版本实例 @Test public void captureScreenInCurrentWindows() { dr ...
- (转)测试rootvg卷组的镜像的官方做法
测试rootvg卷组的镜像的官方做法 这篇文档介绍了测试rootvg卷组镜像的方法,此文档仅使用于带有热插拔硬盘的pSeries服务器.由于rootvg卷组包含有AIX操作系统,在做卷组镜像配置上比非 ...
- SSH 转发学习【转】
本地端口转发 假定有三台主机A.B.C.由于种种原因(无论是防火墙还是路由原因),AC两台主机之间无法连通.但是B却可以和A.C连通.这时候就可以用本地端口转发来实现A和C通过B来连通. A 192. ...
- 【树】Construct Binary Tree from Inorder and Postorder Traversal
题目: Given inorder and postorder traversal of a tree, construct the binary tree. 思路: 后序序列的最后一个元素就是树根, ...
- Disconf 学习系列之Disconf 与 Diamond的横向对比(图文详解)
不多说,直接上干货! Disconf 学习系列之Disconf是什么? Disconf 是来自百度的分布式配置管理平台,包括百度.滴滴出行.银联.网易.拉勾网.苏宁易购.顺丰科技 等知名互联网公司正在 ...
- PHP-note
func_get_arg - Return an item from the argument list func_get_args - Returns an array comprising a f ...
- Math.floor,Math.ceil,Math.rint,Math.round用法
一.Math.floor函数讲解 floor原意:地板.Math.floor函数是求一个浮点数的地板,就是求一个最接近它的整数,它的值小于或等于这个浮点数.看下面的例子: package com.qi ...
- TryParse用法示例
int.Parse()是一种类型转换:表示将数字内容的字符串转为int类型.如果字符串为空,则抛出ArgumentNullException异常:如果字符串内容不是数字,则抛出FormatExce ...
- Ionic项目中如何使用Native Camera
本文介绍如何在ionic项目中使用设备的camera. Ionic版本:v3.2.0 / 2017-05-10 / MIT Licensed / Release Notes ============= ...
- @EnableAutoConfiguration和@SpringbootApplication注解
一.@EnableAutoConfiguration 这个注释告诉SpringBoot“猜”你将如何想配置Spring,基于你已经添加jar依赖项.如果spring-boot-starter-web已 ...