Beego框架简易SQL注入实验

Posted 一只小阿大:)

tags:

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

思路:从URL获取参数,使用原生SQL语句访问数据库

参数是SQL delete语句(理想执行的语句SELECT * FROM users WHERE id = (DELETE FROM mytable WHERE 1=1);)
controllers

func (m *MyTestController) GetSQLInjectionTest() 
	p := m.Ctx.Input.Params() //Params是解析多个参数,返回map
	for k, v := range p 
		m.Ctx.WriteString(k + "=" + v + "\\n")
		models.SQLInjectionTest(v)
	
	

models

//SQL Injection Test
func SQLInjectionTest(Tableid string) 
	o := orm.NewOrm()

	var maps []orm.Params
	num, err := o.Raw("SELECT * FROM users WHERE id = ?", Tableid).Values(&maps)
	if err == nil 
		for _, term := range maps 
			fmt.Println(term["id"], ":", term["name"])
		
	 else 
		fmt.Println("mysqlOriginallySelect error")
	

	fmt.Println("num =", num)
	fmt.Println("err =", err)


然后发现行不通,同事跟我说有两个原因,一个是框架把这语句过滤掉了,还有一个我现在用的是MYSQL8.0,版本比较新,自己试SQL语句的时候都报错,子查询是没问题的


以上是关于Beego框架简易SQL注入实验的主要内容,如果未能解决你的问题,请参考以下文章

C++程设实验项目二:用正则表达式制作一个简易的SQL系统

依赖注入[4]: 创建一个简易版的DI框架[上篇]

依赖注入[4]: 创建一个简易版的DI框架[上篇]

依赖注入[5]: 创建一个简易版的DI框架[下篇]

beego中各类数据库连接方式

sql注入问题-简易登录模型分析和解决方案