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语句的时候都报错,子查询是没问题的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小阿大:)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值