脚本编写学习日记:Go(7)

文章介绍了一种使用ASCII的八进制编码来构造命令,以达到绕过某些安全限制的技术。提供了一个用Go语言编写的简单脚本,该脚本将输入的字符串转换为八进制形式,可能用于命令注入攻击。如果输入包含特殊字符,脚本会将命令包装在`echo`和`sh`之间,否则直接输出八进制表示的字符串。
摘要由CSDN通过智能技术生成

今天早上看到有文章提到了可以利用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)
	}
}

 

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值