渗透之路 WEB漏洞【第一篇】SQL注入之SQL注入原理

这里主要以MySQL举例

SQL注入原理

使用数据库的web程序没有对输入做严格的过滤,用户可以通过修改输入参数来构造并提交SQL,这使得攻击者有机会将程序命令当作用户输入的数据提交给web程序, 最终获取系统信息、甚至执行危险代码或系统命令

注:SQL注入最终注入的是数据库,与脚本、平台无关

SQL注入前奏

1.确定程序脚本

踩点(信息收集): web页面页脚、错误页面、页面源码等

漏洞扫描工具:AWVS、Nessus等工具刺探

2.确定所有可能的输入

web的用户输入方式比较多,其中一些很明显,如GET方式传参(url中)、HTML表单,另外还有HTTP头、cookies、ajax等

3.筛选可用于注入的输入

多留意web应用的错误页面会有很多意外收获

SQL注入判断

手工判断

1."单引号"法

原理是构造报错,如果页面显示报错,说明可能有注入

2.1=1 和1=2法

有时候提交引号会检测非法字符,这时候采用and 1=1 和and 1=2进行提交,如果返回不同的页面,说明可能有注入

工具判断

AWVS AppScan 明小子等

注入分类

SQL语法简介

SQL语法特点

多数数据库SQL语法类似

MySQL三种注释符

#  
--  
/*...*/  

select...where...   

表达式:
	1=1(True) 1=2(False),表达式里有命令会等命令执行后返回结果(命令有错页面报错)
	数字0、空字符串'' 为False(其余字符基本为True)
条件语句:也分True、False,如id=1,name='mr'
where整体为True,否则记录为空

where (条件语句)True or  (表达式)True 	# 显示所有条件语句的记录
where (条件语句)True or  (表达式)False 	# 显示符合条件语句为True的表记录
where (条件语句)False or  (表达式)True 	# 显示所有记录

where (条件语句)True and (表达式)True 	# 显示条件语句为True的表记录
where (条件语句)True and (表达式)False 	# 不显示记录

 

数字型

or 1=1

 

 

字符型

'or 1=1 #

 

 

 

搜索型

'or 1=1 #

XX 型注入

 ') or 1=1 #

 

注入提交方式

get请求一般在地址栏或者hackbar提交

简单的post请求一般hackbar构造包提交

非get请求Burp方便,复杂的包构造很麻烦,Burp直接基于包修改

get 提交

一般直接通过浏览器地址栏提交

post 提交

可通过安装火狐浏览器插件(hackbar 构造请求)或 Burp 工具来完成

 

 

cookie 提交

一般通 Burp 工具来完成

 

转载于:https://www.cnblogs.com/hyit/articles/11468803.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值