type
status
date
slug
summary
tags
category
icon
password

0x00 sql注入简介:

SQL注入即是指 web应用程序 对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的 SQL语句 ,在管理员不知情的情况下实现非法操作,以此来实现欺骗 数据库服务器 执行非授权的任意查询,从而进一步得到相应的数据信息。 sql注入产生的原理:可控变量带入数据库查询

0x01 mysql注入必懂的知识点

1)在mysql5.0版本以上中,存在一个自带数据库名information_schema自带 记录所有数据库名 表名 列名 2)数据库中符号“.”代表下一级,如user.user表示数据库user下的user表 3)information_schema.tables:记录所有表名信息的表 4)information_schema.columns:记录所有列名信息的表 5)table_schema:数据库名 6)table_name:表名 7)column_name:字段名 8)group_concat(table_name):查询所有的表
  1. 猜解多个数据:limit x,1 (变动x) 10)注释符:-- (后面有空格)(也就是--+) ,/**/ , payload结尾单引号闭合

0x02 简单语句使用

查询指定数据库下的表名信息
查询指定表下的列名信息
查询指定数据
简单信息收集

0x03 sqli-labs-1

打开靶场第一关脚本,在脚本里添加如下代码,使得我们输入sql命令时页面会回显出我们使用的命令
notion image
首先判断注入类型 输入
页面回显错误 在后面加上
注释符后回显正确说明为字符型注入
notion image
notion image
 
猜解字段数
查询数据库以及用户
notion image
查询数据库中表信息
通过从库中查询表信息,查询到敏感数据表 users 接下里从表中查看存储信息
查看到有username password账户密码信息,继续查询信息 查询users表中字段具体信息
注入查询成功
notion image
‘’ 数字型
‘1’ 字符型
sqllib-1-4:

0x00 sqli-labs-less2-4总结

对比前面的less1 通过反复实践发现1-4关都使用union注入 考点都在考如何使id闭合
less2 数字型注入不考虑单引号闭合
less3字符型注入通过两个单引号闭合‘’
less4字符型注入通过两个单引号加上括号闭合‘’)

0x01 实例

notion image
notion image
_________________________________________
sqllib-5:

0x00 判断注入类型

首先还是像之前一样判断注入类型,字段长度以及错误回显等,在这一关发现无论怎么输入函数,永远只显示相同画面,错误输入则不显示,从此判断出这里不在使用联合注入查询,因为数据库不会回显输出字符,输出结果只存在0和1,程序已经禁止了数据库信息的返回显示。这是我们就要尝试进行盲注,可以尝试布尔型盲注、报错注入、时间延迟型盲注。这类型手工注入工程量很大,所以建议大家使用sqlmap,直接利用工具进行注入。
判断条件函数
like ‘ro%’ #判断ro或ro…是否成立
regexp ‘^xiaodi[a-z]’ #匹配xiaodi及xiaodi…等
if(条件,5,0) #条件成立 返回5 反之 返回0
sleep(5) #SQL语句延时执行5秒
mid(a,b,c) #从位置b开始,截取a字符串的c位
substr(a,b,c) #从b位置开始,截取字符串a的c长度
left(database(),1),database() #left(a,b)从左侧截取a的前b位
length(database())=8 #判断数据库database()名的长度
ord=ascii ascii(x)=97 #判断x的ascii码是否等于97

0x01 手工注入

1.采用布尔型注入 使用left(database(),n)函数猜解 database()为要截取的字符串,n为长度
因为知道数据库版本是5.0以上版本,所以实验猜解数据库第一个字符长度为5,结果回显正常说明我们的函数注入正确
notion image
根据回显一步步猜测数据库信息,这类注入如果手工注入信息量很大...........
2.时间延迟注入
这里采用了ascii码转换(百度ascii码一大堆)我们错误输入信息通过网络查看发现时间延迟了十秒
notion image
根据是否延迟判断数据库信息,这类时间延迟注入手工注入信息量非常大.......

0x02 总结一下手工注入

1.判断注入点,方式与前面相同只是画面语句变换
2.判断数据库名
1)查询数据库长度
2)查询当前数据库第一个字符
以此类推.......
3.猜解数据库表名 1)判断表名长度 用limit来控制猜解那个表 ,猜测security数据库里的第四个表的长度
2)判断数据库表名第一个字符
以此类推........
4.猜解字段 1)猜测 security数据库 里的 users表 的第二个字段长度,也就是第二个列名的字段长度
2)猜测 security数据库 里的 users表 的第二个列名字段的第一个字符
以此类推......
5.猜解字段具体值 1)猜测 security数据库 里的 users表 的第二个字段username的第一个数据的长度
2)判断username列名的值第一个字符是否为A
以此类推........

0x03 使用sqlmap注入

在这里通过实验发现手工注入此类型注入会消耗大量时间,这里使用一款工具注入,前面有文章详细介绍sqlmap使用。
1.扫描注入存在注入点
notion image
2.查询数据库 --current-db
notion image
3.查询数据库表 --tables
notion image
4.查看列名信息 --columns
5.查看数值 --dump
notion image
比起软件使用,还是要多锻炼手工注入❤
sql注入-宽字节注入文件上传-绕过常见解析后缀
告白
告白
一个普通的干饭人🍚
公告
type
status
date
slug
summary
tags
category
icon
password
🎉告白的个人日常博客🎉
-- 关注微信公众号 ---
Gaobai文库
本站内存在文章缺失,框架组件问题待解决
原博客kxsy.work文章已在慢慢迁移本站
渗透时长两年半的个人练习生
-- 感谢您的支持 ---
👏欢迎阅览👏