关于基于约束的SQL攻击
在创建数据库的时候,一般会先定义整个表的结构,假设我要做的是登录入口,先简单地创建一个用户表。(用户表中,我这里是定义了三个字段,第一个是ID,然后第二个是用户名)
表已经建完之后,看起来也没什么问题,那么如果说我开发完了之后,应该有个登录入口。
对没有账号的人来说,需要有一个注册入口。注册的本质是一个insert的过程,就是往里插入一条数据。假如里面数据库没有数据,我就要往里加一个管理员账户。这个管理员我就会对它设置成admin,密码是12346789。
(在这里我做一个演示,如果大家想看可以到安全牛课堂的视频里看动手操作 CTF从入门到提升 课时2:3分0秒)
先去创建这张数据表,看一下,然后去创建一张,对吧?只有两张表,然后我就去对uc。里面是空的,对吧?我接下来就往里插条数据insert。
刚才我们提到了去注册的时候,它的本质其实是我们一起插入一条数据,它的长度是有限制的,它限制了30位,如果说我们插入31位会这样,它会自动的把31位就是说大于30的东西给吃掉,就是相当于抹掉了,它只会插入前30位。
那么查出去插入的时候,它肯定会先去查一下,你去操作数据在表中原来存不存在。假设我去插了一个31位的数据,它自然表中是永远不会存在的,那么它就会把这31位的数据往表里去插。
比如说用户名是这个密码是大于六位,且包含大写字母小写字母和数字。这么复杂的大写字母小写字母和数字,我就随便设一个,比如说大写字母,这正常登录试试看。大写字母小写字母数字就做一个段落。密码就是一个去做一个登录,发现这个时候就成功了,所以这