基于约束的sql注入
注:
1.本文是对安全牛《CTF从入门到提升》课程课时2第一部分约束条件的安全测试的记录
首先新建一张用于记录用户登录信息的表
1 | create table user( |
然后用户注册时会插入数据
1 | insert into user values('','admin','123456789'); |
登陆时则会执行有约束条件的查询语句
1 | select * from user where username='admin' and password='123456789'; |
看起来没有什么问题,可以如果用户输入的用户名超过30个字符呢?
1 | insert into user values('','0123456789012345678901234567890123','123456789'); |
可以发现此时mysql会舍弃后面的0123,插入一个username为’012345678901234567890123456789’的用户
因此可以利用这一点再次注册一个admin用户
1 | insert into user values('','admin 1','0123456'); |
这样子就会存在两个admin用户,两个密码都可以登录
例题:bugku login1(SKCTF)