头部注入
usename,password被过滤了
无法通过注入usename,password获取信息/*对用户名和密码进行过滤 */
分析源码发现有insert语句,将uagent,ip,$uname,插入数据库,uname无法注入,从其他两个下手。
$_SERVER
$_SERVER是一个包含头信息、路径以及脚本位置等等信息的数组,由web服务器创建,不能保证每个服务器都提高全部项目。
注意: PHP 5.4.0 之前,$HTTP_SERVER_VARS 包含着相同的信息,但它不是一个超全局变量。
(注意 $HTTP_SERVER_VARS 与 $_SERVER 是不同的变量,PHP处理它们的方式不同)
$_SERVER[‘HTTP_USER_AGENT’] //当前请求的 User_Agent: 头部的内容。
$_SERVER[‘REMOTE_ADDR’] //当前用户 IP 。
对于ip和urgent没有被过滤,可以注入。
User-Agent:浏览器的用户代理字符串。
在user-agent中输入以下语句时:'单引号报错 '#单引号加注释报错 'and '1'='1 单引号+and+等式,正常显示。利用burp抓包修改,
`User-Agent: ' and extractvalue(1,concat(0x7e,(select version()),0x7e)) and'1'='1`其他的数据也可爆出。
Referer:发出请求的页面的URI。
学会看源码
* 补充一下,之前都报错不出来,原来是账户密码登陆错误,要登陆才能进行注入。
* 因为在源码sql语句中user-agent处后台已经加了单引号,在报错时记得加and'进行闭合,不然报不出结果。
Less-18
第一步:登陆,成功登陆。
在user-agent构造payload
奇怪了为什么报错语句不行?看了大佬博客原因在:源码中语句:
uagent是在IP和uname之前的,如果注释掉后面的语句,会直接导致Insert语句直接异常,达不到我们查询的目的,
所以改成
成功。
Less-19
改成在referer构造payload。
其他不再赘述。
Less-20
同样uname和passwd都被过滤了,而cookie没有,直接可以获取。我们先了解一下什么是
Cookie:
Cookie,有时也用其复数形式 Cookies。
类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。
查看为单引号闭合性,使用一下联合查询语句,即可。uname=1' union select 1,2,3#
爆库uname=1' union select 1,2,database()#
剩下的可以都可以爆出。