本文主要是介绍[GXYCTF2019]BabySQli 1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
知识点:联合注入插入自定义数据,找注入点
目录
- 注入原理:
- 解题:
- 突破口:
- 怎么区分base32和base64呢?
- 找注入点
- 构造payload
- 参考:
注入原理:
在使用联合注入时,如果我们查询的数据不存在,这时就会把我们所查的数据放入一个新的容器里。
从下图可以看出,本来root,123456是不存在的,但再联合查询中插入到里面了。
我们可以通过这种方法来插入我们想要的数据。
解题:
突破口:
输入万能密码(username=admin,password=password),提示密码错误,看下源码
有一串base32加密字符串,我们把他解密后,在base64解密
select*from user where username = '$name'
怎么区分base32和base64呢?
base32——一般以大写英文字母和数字,或者末尾有三个等于号
base64——一般以大写、小写英文字母和数字,或者末尾有两个等于号
找注入点
我们输入账号为admin,不管密码是什么,都显示wrong pass,
而当账号为其他时,都显示wrong user,所以我们可以猜测账户名为admin,但我们不知道密码,我们可以通过联合注入 来插入一个账号为admin,密码随便,但密码要MD5加密一下,因为…没啥原因,其他大佬说是经验
构造payload
username:
1' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e'#
//e10adc3949ba59abbe56e057f20f883e为123456MD5加密
password:
123456
登录,得到flag
参考:
高诺琪.
这篇关于[GXYCTF2019]BabySQli 1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!