sqli注入的方法以及可能导致sql注入的地方

使用“--”注解后面的sqli语句的时候,如果“--”后面没有空格,可能会失败


"#" 需要编码为%23


有时候注入之后会有多个条目显示,但是返回条件会判断是不是只有1条,这个时候可以使用limit关键词,一条一条显示


通过在输入参数里面,输入"\"字符,破坏原先sql语句结构,达到sql注入的目的,例如sql语句:

SELECT * FROM users WHERE username='[username]' and password='[password]',把username内容输入为"\",把password内容设置为 "or 1=1 -- ",那么sql语句变为:

SELECT * FROM users WHERE username='\' and password=' or 1=1 --'

上面的sql语句查询条件,username为"\' and password" 但是后面的 "or 1=1"

sql语句会总是执行成功,达到注入的目的了


在移动应用中,有时候会把查询条件作为参数传递,这时候进行sql注入就更简单了,例如:/sqlinjection/example4/?req=username%3d%27hacker%27


LIMIT后面的内容页可能作为参数传递给数据库去查询,但是order by关键词必须在limit前面,因此如果在limit的内容后面加"--"是无法注释掉order by的,这种注入点,可以使用union关键词来实现注入


group by后面的内容可能作为参数传递给数据库去查询,在sql语句中,group by位于order by 之前,因此如果在group by的内容后面加"--"是可以注释掉order by的


当sql语句的错误信息不返回,或者说在输入参数中加入的注入内容没有反应的时候,可以使用sql盲注,例如加入sleep函数,如果存在注入点,那么执行时就会sleep一定时间


字符集设置有可能导致mysql-real-escape-string转码发生问题,在验证输入参数有可能导致不能去掉单引号转义等,导致sql语句判断条件恒成立,例如设置成gbk字符集之后,“%bf%27 or 1=1 -- ”会恒成立





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值