BUUOJ-每天两道,告别烦恼
WEB:
[GXYCTF2019]BabySQli
输入用户名admin,发现可以登入,其他显示wrong user
源码中发现,存在base编码
先base32再base64解码,发现sql语句尝试去注入
首先尝试万能密码:
发现被拦截
尝试手工注入:
一个联合注入新知识
在联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据。
下面是一个自己的本地环境
数据库原本这几个用户名和密码
执行select * from flag WHERE username=‘admi’ union select 1,‘admin’,'ababa’语句时,就会虚构一个如下图的数据
回到题目;
select * from user where username = ‘$name’
username的查询语句是这样的,password判断大概率就是满足admin后,判断密码是否相等,放入数据库的密码一般是加密,一般加密就那么几种,这里尝试出是md5
构造playload:name=1’ union select 0,‘admin’,‘81dc9bdb52d04dc20036dbd8313ed055’%23&pw=1234
以上playload是利用联合查询构造虚拟数据,让其判断admin,和其密码的md5值,只要我们构造对应密码的md5值,就可以利用虚拟身份绕过审核机制。