CTF show WEB10

admin 2022年1月5日23:00:54CTF专场评论19 views702字阅读2分20秒阅读模式

>

>

CTF show WEB10

_yu_

题目地址:https://ctf.show

打开页面点击取消按钮,出现源码
$regex = "/(select|from|where|join|sleep|and|\s|union|,)/i";
源码中可以得知几乎把注入用到的关键词过滤的差不多了。
如果只有这一条现在可以采用双写绕过,但是下面这条限制,使得无法双写绕过

if(strlen($username)!=strlen(replaceSpecialChar($username))){
			die("sql inject error");
		}

这里介绍两个mysql语句
①group by(将结果集中的数据行根据选择列的值进行逻辑分组)
不加group by时的输出如下:
CTF show WEB10
在使用group by以后会按照password中的值进行排列:
CTF show WEB10
②with rollup (group by 后可以跟with rollup,表示在进行分组统计的基础上再次进行汇总统计)
来看实例:
CTF show WEB10结果中将会多出一行,其中password列为null,count(*)为统计和。
这里我们就可以通过骚姿势绕过了。
其中/**/是为了绕过空格过滤
payload:username=admin'/**/or/**/1=1/**/group/**/by/**/password/**/with/**/rollup#&password=
因为加入with rollup后 password有一行为NULL,我们只要输入空密码使得(NULL==NULL)即可满足$password==$row['password']的限制成功登陆。
登录成功即可显示flag。

如有错误或者更好的方法欢迎在留言中提出。


特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月5日23:00:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  CTF show WEB10 http://cn-sec.com/archives/719779.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: