登陆一下可以么?

打开连接出现以下情况:

先试试username=admin'--&password='or''='

回显:

对不起,没有此用户!

这时候--和or被过滤看起来好可怕,但是单引号'没被过滤就是最幸福的事儿了(虽然有可能是经过转义的,但题目中说只是过滤,没说转义,( # ▽ # ))
这时候其实只要帐号和密码都上万能密码,啥都搞定,看似被过滤了n多n多,但却是最容易注入进去的。

来一个过法:)
username=TGhost'='&password=TGhost'='

flag立马就拿到,为何能过呢?很多人就疑问了?没有or也能万能注入?
解析过程看下面
- - - - - - - - - - - -
假设sql语句如下
select * from user where username='用户名' and password='密码'

当提交username=TGhost='&password=TGhost'='
语句会变成如下:
select * from user where username='TGhost'='' and password='TGhost'=''
这时候还不够清晰,我提取前一段判断出来(后面的同样道理)
username='TGhost'=''
这是有2个等号,然后计算顺序从左到右,
先计算username='TGhost' 一般数据库里不可能有我这个小名(若有,你就换一个字符串),所以这里返回值为0(相当于false)
然后0='' 这个结果呢?看到这里估计你也懂了,就是返回1(相当于true)

所以这样的注入相当于
select * from user where 1 and 1
也等于 select * from user
(这题只有筛选出来的结果有3个以上才会显示flag,没有就一直说“对不起,没有此用户!!”)

好了,继续唠叨几句,上面那个比较是弱类型的比较,
以下情况都会为true
1='1'
1='1.0'
1='1后接字母(再后面有数字也可以)'
0='除了非0数字开头的字符串'
(总体上只要前面达成0的话,要使语句为true很简单,所以这题的万能密码只要按照我上面的法子去写一大把)

 tips:0='除了非0数字开头的字符串',这个我修改为0='字母开头的字符串'还有='0开头但后面没接其他数字的字符串'

 

转载于:https://www.cnblogs.com/TGhost/p/7103550.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值