C/C++教程

wp-buuctf-babysql

本文主要是介绍wp-buuctf-babysql,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

wp

这个题和以前的一个题很像,很有意思,记录一下。
题目中有提示信息(与答案非常接近),主要是理解,这里会尽量不使用提示。
在这里插入图片描述
随意输入进行探测,提示信息页面中查看源代码。
在这里插入图片描述
注释中是大写字母和数字的混合,这是base32的特点,base32解密一下
在这里插入图片描述
有两个等号,这是base64的特征,解密一下:
在这里插入图片描述
这里可以看出这是账号密码不同步sql语句筛选,也就是会先选username,再在结果中比对password
关键就在这里,不同步筛选会产生哪些问题呢?
首先可以考虑group by注入,但是在这里密码不允许为空:
在这里插入图片描述
但是,这里只是前端限制
在这里插入图片描述
把这里的required删了就行,但是,还屏蔽了关键字password,那看来没办法了。
这里用到的就是虚拟数据,在之前的探测中,我们经常用到select 1,2,3等来查看回显位置,在数据库中的产生就是这样的
在这里插入图片描述
这也是回显产生的原因,但是这个操作并没有创建1,2这个数据,而是强制筛选出一组临时数据。
如果在普通的username和password双验证的情况下,是无法完成这个操作的
在这里插入图片描述
但是这里就是先验证username再验证password,也就说我们可以先进行强制筛选,在输入密码与我设置的临时数据相同就可以了。
以下为提示(也可能为答案)
在这里插入图片描述
在这里插入图片描述
相信你已经能够看到这个提示了,最后多了一次hash。
也就是先强制进行筛选,最后填入设定好的临时数据,password验证正确就登陆成功了。数据库中演示如下(省略了id字段)
在username输入后,筛选出这样一条临时数据。
在这里插入图片描述
然后在密码栏输入123

md5($password)=password

验证成功
(提示需要删除md5两边的空格就是答案,当然你也可以换你喜欢的md5值和密码)
临时数据设置时,仅能使用admin,可以在探测中测试出来,所以猜想后台代码如下:

$data = select * from users where username=$name.
if ($data['username'] === 'admin') {
	if ($data['password'] === md5($pw)) {
		return true;
	}
}
这篇关于wp-buuctf-babysql的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!