image-20230529211827617

之前面试有出过一个这个类似的,现在复现一下

访问链接,发现一个登陆页面

image-20230529212201805

先用dirsearch扫一下

image-20230529213056045

挨个查看,最后发现news目录下的东西有些可疑

image-20230529213157805

下载zip文件,可以看到list.php的源码

image-20230529213532178

主要看php里的内容就好了,主要意思就是,list.php通过get请求获取一个id,并对其进行decode
decode函数里的内容就是,将参数data经过两次base64解密,然后经过mdecrypt_generic函数操作(通过英文可以大概知道是用来解密的函数),如果后六位是_mozhe就会返回除去 _mozhe的剩余部分,也就是接入sql语句。

目的也就明确了,就是sql盲注嘛,首先要搞清楚mcrypt_generic_init中几个参数的含义(应该就是对应的加密规则)

aes在线工具:AES加密、AES解密 - 在线工具 - OKTools

通过搜索发现是使用的AES加密,ydhaqPQnexoaDuW3是密钥,2018201920202021是参数。那么我们就先使用1_mozhe进行测试去进行aes加密+base64加密(这里使用的工具结果是经过一次base64加密的),这样根据php源码,如果对应上了,页面就不会跳转,而且应该会有数据,如果错了就会跳转到index.php页面

payload:/news/list.php?id=WDhGNGdmdGo4WXArSXhMOXlVa2FwQT09

果然显示出了通知,接下来就开始sql注入了

image-20230529232424956

测试字段数量

image-20230529232730372

ps:上述图片结果记得再加密一次base64

image-20230529232805945

最终测试字段数为4,下图是order by 5时的报错(虽然从源码里也能看到是4个字段,做完才想起来)

image-20230529233232099

测试4个字段哪一个有回显

image-20230529235229938

发现2,3有回显

image-20230529235310954

爆破数据库名

image-20230529235412852

爆破表名

image-20230529235547054

估计用户就在第一个表里,爆破字段

image-20230529235736792

爆破用户名密码,得到两个账号,应该说是两个密码??

image-20230530000016518

image-20230529235917643

密码看起来都是md5加密,破解一下,应该只有一个能被破解出来,试试看

md5线上工具:md5在线解密破解,md5解密加密 (cmd5.com)

结果发现两个都解出来了。。。

image-20230530000322178

image-20230530000348852

登录账号,果然虽然两个密码都解出来了,dsan13这个是不能用的,阴险~

image-20230530000714187