GO_sql注入

Posted yzg-14

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO_sql注入相关的知识,希望对你有一定的参考价值。

我们任何时候都不应该自己拼接SQL语句!

sqlInjectDemo("xxx‘ or 1=1#")
sqlInjectDemo("xxx‘ union select * from user #")
sqlInjectDemo("xxx‘ and (select count(*) from user) <10 #")
package main

import (
	"fmt"

	"github.com/jmoiron/sqlx"

	_ "github.com/go-sql-driver/mysql" // init()
)

// Go连接MySQL示例

var db *sqlx.DB // 是一个连接池对象

func initDB() (err error) {
	// 数据库信息
	// 用户名:密码@tcp(ip:端口)/数据库的名字
	dsn := "root:root@tcp(127.0.0.1:3306)/sql_test"
	// 连接数据库
	db, err = sqlx.Connect("mysql", dsn)
	if err != nil {
		return
	}
	db.SetMaxOpenConns(10) // 设置数据库连接池的最大连接数
	db.SetMaxIdleConns(5)  // 设置最大空闲连接数
	return
}

type user struct {
	ID   int
	Name string
	Age  int
}

// SQL注入

// sql注入示例
func sqlInjectDemo(name string) {
	// 自己拼接SQL语句的字符串
	sqlStr := fmt.Sprintf("select id, name, age from user where name=‘%s‘", name)

	fmt.Printf("SQL:%s
", sqlStr)

	var users []user
	err := db.Select(&users, sqlStr)
	if err != nil {
		fmt.Printf("exec failed, err:%v
", err)
		return
	}
	for _, u := range users {
		fmt.Printf("user:%#v
", u)
	}
}

func main() {
	err := initDB()
	if err != nil {
		fmt.Printf("init DB failed, err:%v
", err)
		return
	}
	// SQL注入的几种示例
	// sqlInjectDemo("xxx‘ or 1=1 #")
	sqlInjectDemo("xxx‘ union select * from user #")
}

技术图片

 

以上是关于GO_sql注入的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段

Android 片段和依赖注入

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Android片段和依赖注入