0x00 奉上源码

记一次sql约束攻击

0x02 解题过程

这题源码看上去虽然比较长,但是其中大多是正常的sql执行语句,和一些简单的get,post之类的语句

简单解释一下这个过程,首先注册,账号密码,如果账号重复会出现 user already exists的问题,密码方面,如果密码的长度小于8的话,会出现password too short的问题。然后登陆,如果不是以admin的账户登陆的话,会出现you are not admin的问题,所以说,这个题目要解出来,就必须以admin的账户登陆。

显而易见,我们这里如果注册admin的话,肯定是已经被注册掉的,所以需要换个思路,看了半天代码没发现什么,后来发现有个注释被我忽略了,来一下这个注释

导致注入的一点的地方是这里的一句注释

 // SQL schema: create table users(username varchar(25), password varchar(25));

这行导致了类似于sql约束攻击的存在

首先我们得知道,sql数据库处理数据的时候,会把字符串后面的空格忽略掉,比如说"hello"和"hello             "是一样的,所以说这里我们可以用这个来进行注入

可以看到这里数据库提取前25个字符,所以我们设计一个以admin开头,并且后面跟一串空格,超过25位时,加一个任意字符,就可以成功

原因是这样的,admin(插入20个或以上个空格)后面加一个任意字符,比如admin                     a,这个用户名和admin是不一样的,但是数据库只接受前25个,所以它就收录了,admin和一串空格,但是上面提到过,会忽略掉空格,所以这个方法就可以让我们伪装成admin来登录,所以我们注册admin                        a为用户名,123456789为密码,登录的时候用admin即可,密码当然是123456789,于是结果就出来了。

记一次sql约束攻击

相关文章:

  • 2021-07-19
  • 2021-05-11
  • 2021-07-13
  • 2022-02-09
  • 2022-01-31
  • 2021-07-01
  • 2021-10-04
  • 2021-09-30
猜你喜欢
  • 2021-06-16
  • 2021-12-28
  • 2021-05-07
  • 2021-10-11
  • 2022-12-23
  • 2021-09-11
相关资源
相似解决方案