在实际渗透中,我一直坚信一个思想,如果目标能够渗透进去,而我却没有成功,一定是信息收集的时候,没有收集到关键点。
本文只是一个引子,希望各位师傅们可以有所收获
我们平常少不了的收集手段是端口和目录。而端口我们可以用fofa或者nmap等这些已经灰常好的工具,让我们进行探测。
本文用于一个demo测试,表哥们可以自行改编
本文demo包括:
命令行下工具以及GUI工具,最后介绍一下B/S架构的思考
本人还在学习,所以代码有点菜比,思路最重要,嘤嘤嘤~
让我们早点摆脱脚本小子和ctrl+cctrl+v工程师的名衔
首先,编写一个工具或者程序首先要有一个思想。
什么是目录探测呢?
第一,要发送请求是不是。
第二,我们要判断响应码是不是。
第三,可能由于waf的存在,目录不存在响应码也是,那我们是不是可以在目标站随便输入一个目录,故意让他报错,看他存在的报错信息,是什么,是"页面不存在,跳转"这种字符提示信息。还是提示。那样是不是我们可以直接在源代码中匹配这些关键词,如果匹配成功我们就判断这个目录不存在。(简单的绕过技巧思路)
那下面我们开始一步一步分析:
importrequestsa="
▍★∴
....▍▍....█▍☆★∵..../
◥█▅▅██▅▅██▅▅▅▅▅███◤
.◥███████████████◤ ~~~~◥█████████████◤~~~~雷石安全实验室出品-h查看相应步骤版本0.`)os.Exit(1)}file,err:=os.Open("1.txt")iferr!=nil{fmt.Printf("文件读取失败")}deferfunc(){file.Close()}()n:=bufio.NewScanner(file)//fmt.Printf("%T-%d\n"m,n,n)//fmt.Printf("%T--\n",n.Scan())//fmt.Println(n.Scan())forn.Scan(){data:=n.Text()resp,err:=
▍★∴
....▍▍....█▍☆★∵..../
◥█▅▅██▅▅██▅▅▅▅▅███◤
.◥███████████████◤ ~~~~◥█████████████◤~~~~雷石安全实验室出品-h查看相应步骤版本0.test`)os.Exit(1)}times:=time.Now()urls:=make(chanstring)file,err:=os.Open("1.txt")iferr!=nil{fmt.Println("字典打开失败:",err)return}defertesttime(times)deferfile.Close()gotest01(file,url,urls)//开启多个goroutinesfori:=0;i;i++{wg.Add(1)gogourl(urls)}wg.Wait()}funcgourl(urlschanstring){for{/*Go里面提供了一个关键字select,通过select可以监听channel上的数据流动。select是Go中的一个控制结构,类似于用于通信的switch语句。每个case必须是一个通信操作,要么是发送要么是接收。select随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。一个默认的子句应该总是可运行的。*/select{caseurl,ok:=-urls:if!ok{wg.Done()return}//Golang通过