url有长度的限制,参数过多的请求会打包成post的方式提交,需要接收cookie就要在头部中提交,在这种情况下才会产生对于get,post,cookie等注入方式;
形成原因
讲sql注入存在的点,get,post,cookiel,xff,并说了形成注入的原因;
不同的源码的接受参数的形式略有不同这里给常见的
sqlmap参数等价替换
--data和sqlmap的-r xxx.txt的功能一样
xff注入源码中的变量
xff头部注入,代码审计的时候可以通过搜索获取ip的函数去找到;
$_SERVER[’ ']
是php的全局变量,用来获取系统的一些值,一些信息;
SERVER详解
cookie注入案例分析
注入存在在页面的请求中,这样直接访问文件直接即可,但如果是写在一个函数中就需要调用这个函数去执行这个函数才行
搜索谁调用了这个函数没有搜到
搜索谁调用了这个对象,调用这个对象的作用就是为了使用方法,查到index中调用了
index中声明了如果archive和action变量为空,就执行上面,也就是包含/interface/public.php这个文件,那包含这个文件对我们来说没有用,我们要让他执行下下面,并且让archive变量等于order,就会调用/interface/order.php这个文件,也就是存在cookie注入的文件,;
在之后就是新建mainpage对象;判断是否存在,如果存在就调用这个$action()方法,也就是说到现在为止就是已经完成 到包含到order.php文件,然后调用了这个mainpage的方法了,还差最后一步就是调用那个存在注入的方法了;
根据代码逻辑会去调用$action的方法名称,那我们就只需要把$action变量赋值成inlist即可调用,但是因为上文代码中会自动给action加了个in_,所以我们给$action变量赋值个list就能组成存在注入的方法in_list
最后访问的路径应该是如下,其中ac控制包含了order.php文件,at控制了调用in_list函数;
只要访问这个地址就能触发这个存在cookie注入的函数
最后就是在cookie处放上pyload即可
注入的前三个小结
不同的数据库确定的pyload的写法有一点点区别,需要用到的函数也不同,传参的数据类型不同考虑到不同的闭合方式和是否编码等等,提交查询的方式不同也就是注入点的不同,有可能在url中也有可能在请求头中(xff/cookie);