环境搭建
这里我们用phpstady搭建
版本是cmseasy5.5
未授权访问
这里ip的方法获取客户端的ip
这里的意思是当你的server ip等于 客户端ip并且get传参 get('ishtml')==1的情况下他会直接return
他就不会检查后面是不是admin,而他这个IP是从X_FORWARDED_FOR获取,这个是可以伪造的'所以我们就可以以一个未授权的方式登录进来主要是拿到我们的安全码 ,因为后面度注入需要这个安全码
640911e40c5ad8e9e7ea41eb00c2804f
sql注入
他是将cookie安全码和get传参的base64解码然后解密给args,arge进行反序列化然后传给user,我们跟进这个user看一看,发现这好像跟数据库有关系
我们找到他的加密函数和与他相关联的函数拿出来分析
我们的key就是那个安全码,id就是后面,这里需要用数组并且需要20个元素,因为数据库表里有20个要与之对应
前面语句已经说明了这里我们就要与之对应的方式去进行,他反序列化我们就序列化,他解密那我们就加密,然后就拿到这一串
但是这里面有/和+我们需要编码
这里有act=login和我们的remotelogin的而我们用的是remotelogin这个方法,而后面我们需要加上args因为这个函数里面需要这个值然后加上之前页面的那一串注意将里面的/换成%2f,+换成%2b
这里我们拿到了账户和密码 密码是一个md5值可以解密,%3A是一个分隔符,他是存储到cookie里面的我们从代码也可以看出