Sqli-lab靶场

Sqli-lab靶场

前言

通过win10 docker搭建,80端口映射到本机的8888端口。

通过这个靶场可以系统学习sqli

Basic Chanlleges

image-20211025130228841

Less-1

GET传参-基于报错-单引号-字符串

?id=1有两个回显,存在注入点

?id=1'出现报错,是MySQL报错,我们该学习如何去看报错
image-20211025153901539

在上图的near后面是''1'' LIMIT 0,1',我们去掉左右两个引号出错的的地方是'1'' LIMIT 0,1,只有三个',所以语法错误。

union 联合查询,将两个select语句的查询结果一起返回,回显到我们的页面。

但是需要注意的是,两个select的列数要一样,才能回显。

?id=' union select 1,2,3--+,不仅可以得到列数,还可以得到回显的位置

image-20211025162213822

所以2,3都是回显的位置,所以接下来可以使用hackbar的一些语句去获得mysql的数据了。

image-20211025162502494

1
?id=-1' UNION SELECT 1,2,(SELECT GROUP_CONCAT(username,password SEPARATOR 0x3c62723e) FROM users)--+

0x3c62723e是<br>的hex编码。

将表名使用hex编码或者利用CHAR()函数,可以绕过单引号限制

Less-2

GET传参-基于报错-基于整型

根据报错判断出id是一个整型的注入点,不需要闭合,接下来就和上一题一样

Less-3

GET传参-基于报错-带括号的单引号

image-20211025184518768

根据报错判断闭合方式为?id=1') ,其他同上

Less-4

GET传参-基于报错-双引号

image-20211025185000471

根据报错,闭合方式为?id=1"),其他同上

Less-5

GET传参-二次注入-单引号-字符串

与前面的改变是select没有回显,也就是说不能使用union联合注入查询数据库信息。

image-20211025190605757

根据报错,与Less-1的闭合方式相同是?id=1'

这道题需要用的是报错注入,hackbar自己提供了一个基于extractvalue()函数的报错注入

image-20211025202543008

成功报错得到数据库名

image-20211025202703212

Less-6

GET传参-二次注入-双引号-字符串

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2021 Sung
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信