数据库结构基础
如图所示 数据库 为层级结构:
+数据库 ( database )
+ - 表_user ( table_user )
+ - 表_users ( table_users )
+ + - 列_id (column_id)
+ + - 列_username (column_username)
+ + - 列_password (column_password)
+ + + - 数据
+ + + - 数据
数据库语法基础¶
常用语法:
SELECT
UNION
注意 使用 UNION
的时候要注意两个表的列数量必须相同。
LIMIT
SQL #返回表中前number行数据 SELECT column1, column2, ... FROM table_name LIMIT number; #从offset+1行开始返回row_count行数据 SELECT column1, column2, ... FROM table_name LIMIT offset, row_count; #比如 LIMIT 10, 10 返回11-20行数据
SQL SELECT * FROM table_name ORDER BY column_name DESC LIMIT 10;
注释
SELECT username,password FROM users WHERE id = ((1)) union select username,password from user;-- )) limit1,1;后面的内容都将被注释
DROP/*comment*/sampletable` DR/**/OP/*绕过过滤*/sampletable` SELECT/*替换空格*/password/**/FROM/**/Members #/**/可用于替换空格
#/*中间的内容都将被注释*/
Order by
其中,column1、column2 等表示要查询的列名,table_name 表示要查询的表名,condition 表示查询条件,column_name 表示要按照哪一列进行排序,ASC 或 DESC 表示升序或降序排列。可以使用多个列名来进行排序,多个列名之间用逗号分隔。
# 在SQL注入中我们常用它来判断列数
SELECT column1, column2 FROM table_name [WHERE condition] ORDER BY 1;# 不报错
SELECT column1, column2 FROM table_name [WHERE condition] ORDER BY 2;# 不报错
SELECT column1, column2 FROM table_name [WHERE condition] ORDER BY 3;# 报错
常用参数:
user()
:当前数据库用户database()
:当前数据库名version()
:当前使用的数据库版本@@datadir
:数据库存储数据路径concat()
:联合数据,用于联合两条数据结果。如concat(username,0x3a,password)
group_concat()
:和concat()
类似,如group_concat(DISTINCT+user,0x3a,password)
,用于把多条数据一次注入出来concat_ws()
:用法类似hex()
和unhex()
:用于 hex 编码解码ASCII()
:返回字符的 ASCII 码值CHAR()
:把整数转换为对应的字符load_file()
:以文本方式读取文件,在 Windows 中,路径设置为\
select xxoo into outfile '路径'
:权限较高时可直接写文件
原创文章,作者:修行,如若转载,请注明作者昵称:修行及出处:https://www.xiuxingstudio.com/computer/database/4519.html