学习记录-header注入(手工注入)

学习记录-header注入(手工注入)-利用致命报错进行注入

注:本文只用于学术交流,不用于其它用途,不足之处,评论之处,谢谢大佬们

一、header注入概念

php中存在许多预定义变量 , $_get、$_post、$_cookie 、$_SERVER等,包含多种信息,$SERVER包含了头部信息等,很多网站需要记录头部信息,存入数据库,通过对头部信息字段的修改注入,完成对数据库的渗透,这个就可以称为header注入。需要注意的是很多网站记录的是用户ip,这个中间存在代理,所以需要多次尝试新增字段信息同时加入注入语句,模拟代理新增头部信息,然后进行渗透。

二、注入步骤

大概流程:暴力破解—字段尝试----字段注入,获取数据

1)暴力破解,很多网站现在记录header信息都是针对已经登录的用户,所以可以使用surp暴力破解账号密码,然后去header注入。也有少许网站不需要登录直接就获取header信息存储在数据库,比如匿名留言等,这个具体的看网站,然后多尝试进行操作。

2)字段尝试,这里利用报错注入,当数据库没有屏蔽报错,页面会对致命错误报错,在里面插入子查询,报错内容就是我们查询结果,如:'or updatexml(1,concat(0x7e,(select version())),2),123) # 这里就是利用报错查询版本,0x7e十六进制表示~字符,concat() 函数是连接函数,updatexml函数(查找内容,路径,修改内容)这里利用函数路径含有特殊字符 ~报致命错误,显示子查询内容,这里需要多次尝试header不同字段,确认某字段存在header注入。
另外一种情况:如果服务器是记录用户ip,数据交互就可能经过代理然后代理处理后在数据包头部加入某字段记录用户ip然后转发到服务器,http协议—http包里面加入头部字段记录ip—服务器解析,通过burp,我们只能截取修改用户发送包,通过修改新增模拟代理新增字段,然后发送到代理服务器处理,最后给服务器解析,这里代理服务器处理可能会和我们修改后的包加入相同的字段,有可能获取到含sql注入的字段,也可能没有获取,这个的看代理服务器按什么顺序加字段;服务器源码不怎么清楚,逻辑是先获取哪个字段得ip,所以我们截取抓包新增字段,需要多次尝试不同的字段去试,如某cms源码
在这里插入图片描述
在这里插入图片描述
这只是代理其中一种处理方式,假如代理是这样处理数据包,你不知道代理服务加其中哪一个字段,所以我们就需要多次尝试

3)字段注入,获取数据,检测到可以注入,那就很好办了,主干代码如下:利用mysql5.0上版本有自带库信息查询相应信息。

'or updatexml(1,concat(0x7e,(select table_name from information_Schema.tables where table_schema=database() limit 0,1 )),2),123) # #这个是获取表名

'or updatexml(1,concat(0x7e,(select column_name from information_Schema.columns where table_Schema=database() and table_name=“xxx” limit 0,1 )),2),123) # #获取列名

'or updatexml(1,concat(0x7e,(select xxx from xxx limit 0,1 )),2),123) # #获取记录信息

三、其它知识总结

1、暴力破解

暴力破解,用工具burp suit,前提得拥有一个好字典,如果没有破解开,就只有试试其它注入,cooking注入、盲注等等
1)设置代理,每一个浏览器得代理设置存在差异,可用插件也可直接设置,我这里设置得是本地代理500端口
2)设置burp代理500端口
3)开启拦截数据包,相当于中间人,起一个修改转发作用
4)选中截取的请求包,contrl+i设置账号密码两个字段,自定义字典,选择暴力破解
5)查看结果,小技巧最好通过排序得方法,简单看字段数量分类查看结果
在这里插入图片描述
在这里插入图片描述
2、显错注入和报错注入区别

显错注入主要是通过页面返回信息判断sql注入点,报错注入通过致命报错,出现报错弹窗判断sql注入点。

四、个人总结:
1)报错显示,一次只能显示一条信息,不能显示多条,用limit函数去看记录
2)很多时候,~被过滤,0x7e可以代替,不限于 ~,!%等特殊符号也可引起致命报错
3)对于记录ip信息,代理服务处理多样话,不清楚怎么添加字段,我们只能先截取包自己手动模拟添加,然后发送出去给代理处理,能不能成功,还需要看服务器源码怎么写,是先获取哪个字段的ip,如先获取含注入的ip字段,则可以注入成功,所以需要多次添加不同的ip字段,多尝试
4)报错注入,不限于header注入,也不限于updatexml函数

猜你喜欢

转载自blog.csdn.net/SmileAndFun/article/details/107346065