bugku-ctf SKCTF管理系统 writeup 心得笔记

最近一直着迷CTF,记录一下WEB中的一个题目解题心得。

这道题已经提示了 使用sql约束攻击。

于是准备试试,

先注册一个用户 

注册成功!有点爽了感觉,然后登陆这个用户

登陆提示 

 

冷静下来想了想 提示是利用SQL约束攻击,那么办法来了,既然上面显示只有管理员才能看见flag 那么我们先要尝试一下管理员是哪个账号,在注册界面 使用账户名admin走一发 看看账户是否是存在,如果存在代表admin肯定就是这个系统的管理员账号。

注册界面输入admin 密码乱输即可

那就好办了,利用SQL约束攻击,构造一个admin很长的字串 以admin开头 中间是空格 (_代表空格)  admin                                                                   1密码输入自己的密码就可以

用户信息:admin                                                                                            1

密码:Xxxxxxx123456

然后注册 提示注册成功!

然后再登陆!发现flag出来了 ~~~~~~ get it!

原理:

SQL约束攻击,其实利用的是数据库建表时,约束了字段的长度,例如username如果约束长度是2的话 输入超长的长度是只会保留约束长度的,例如varchar username(5) 那么当你输入一个用户名是helloworld 的时候 数据库只会存入 hello 。

所以这道题目里面 如果你构造一个很长的admin用户名 例如 admin                                                1  那么数据库只会存入admin(后面很多空格数据库是不存入的) 所以相当于 存入了很多admin的同名用户,密码当然是你自己注册那个密码了。所以一切搞定。

防范措施:

对于insert操作时,对于用户的check 不要使用namecheck 而使用idcheck。

一篇不错的讲解文章,做题思路来自于此感谢作者:

https://www.freebuf.com/articles/web/124537.html

题目做了很多了,都没有记录下来。这道题算开个头吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值