今天早上看到有文章提到了可以利用acsii的8进制编码进行命令执行,应该能达到绕过效果,写了一个简单的脚本,能方便一点
package main import ( "flag" "fmt" "strings" ) var ( order string ) func main() { flag.StringVar(&order, "o", "", "") flag.Parse() var m map[string]string m = make(map[string]string) m = map[string]string{ "0": "060", "1": "061", "2": "062", "3": "063", "4": "064", "5": "065", "6": "066", "7": "067", "8": "070", "9": "071", "A": "101", "B": "102", "C": "103", "D": "104", "E": "105", "F": "106", "G": "107", "H": "110", "I": "111", "J": "112", "K": "113", "L": "114", "M": "115", "N": "116", "O": "117", "P": "120", "Q": "121", "R": "122", "S": "123", "T": "124", "U": "125", "V": "126", "W": "127", "X": "130", "Y": "131", "Z": "132", "a": "141", "b": "142", "c": "143", "d": "144", "e": "145", "f": "146", "g": "147", "h": "150", "i": "151", "j": "152", "k": "153", "l": "154", "m": "155", "n": "156", "o": "157", "p": "160", "q": "161", "r": "162", "s": "163", "t": "164", "u": "165", "v": "166", "w": "167", "x": "170", "y": "171", "z": "172", "!": "041", "\"": "042", "#": "043", "$": "044", "%": "045", "&": "046", "'": "047", "(": "050", ")": "051", "*": "052", "+": "053", ",": "054", "-": "055", ".": "056", "/": "057", ":": "072", ";": "073", "<": "074", "=": "075", ">": "076", "?": "077", "@": "100", "[": "133", "\\": "134", "]": "135", "^": "136", "_": "137", "`": "140", "{": "173", "|": "174", "}": "175", "~": "176", " ": "40", } var slice []string check := 0 for _, i := range order { s := string(i) if s == " " || s == "|" { check = 1 } value, ok := m[s] if ok != false { values := fmt.Sprintf("\\%s", value) slice = append(slice, values) } } list := strings.Join(slice, "") if check == 1 { lists1 := fmt.Sprintf("echo %s|sh", fmt.Sprintf("$'%s'", list)) fmt.Println(lists1) } else { lists := fmt.Sprintf("$'%s'", list) fmt.Println(lists) } }
![]()