打开环境发现是一个登陆页面

页面.PNG

随意输个账号密码显示错误,不过发现了base32密文信息

base64.PNG

解码发现是base64密文接着再解码发现sql语句

base32解码.PNG
base64解码.PNG

利用语句测试字段数为3

显2.PNG

用户名的位置在2

用户名位置.PNG

判定注入点在name上面,而且这题的源码提示 md5加密的password要跟第三列数据相等

源码.png

知识补充:

这里可以采用联合查询的方法, 因为在使用联合注入时,如果查询的数据不存在,那么就会生成一个内容为null的虚拟数据,也就是说在联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据。所以这时就可以在注入时添加需要的信息来完成目的

举例子:

例子1.png

这是数据库里本有的账号和密码,现在用联合查询这个技巧来看看

例子2.png
执行之后
例子3.png

构造payload:

  1. name=1' union select 0,'admin','202cb962ac59075b964b07152d234b70'%23&pw=123
  2. #其中 ‘202cb962ac59075b964b07152d234b70’是123的md5值

其中 ‘202cb962ac59075b964b07152d234b70’是123的md5值,执行之后看到flag

flag.PNG