再次非常感谢@A组~逗比 哈哈哈哈哈哈哈
在controller目录下的buy.php文件,
直接获取fromurl作为参数并赋值给myurl2,继续跟进,发现
myurl2又赋值给url2参数。
既然fromurl参数有漏洞,那么全局搜索fromurl,看哪里调用了它,
在controller目录下的admin.php文件,
如果直接访问index.php?c=buy&a=saveorder是无法访问的。 得生成订单页才行,
需要在后台添加产品
发现有把url2入库
但是在添加订单的post请求中,没有url2参数
就算我手动添加url2参数,数据库里也不会有任何改变,一直是手动添加,
那我就跟进代码,代码在savemyorder函数中(因为是单文件入口,都会通过index.php这个文件来接收并转发到功能代码,而controller则代表着控制器,它的值对应controller文件夹下的类文件名和类名)
果然,url2参数在添加订单这里是写死的
那么这里想的话,应该是得改fromurl的值,因为fromurl会把值传给url2, 继续往下走, 然后添加订单组,然后生成订单页
生成以后,会在根目录生成order.html文件
生成的玩意order.html是这样的
但是我跟过去的生成的订单页的代码是这样的,
代码在controller目录下的admin.php文件中的getform函数中
按照代码来说,应该生成的页面中应该要有银行卡账号、支付方式。
然后我点立即提交订单是空白的,并且fromurl参数不入库
点击立即提交订单就会出现fromurl参数
这里又回到了buy.php文件了,因为这里提交订单的调用的url是 查看saveorder函数,发现这里应该是要把post的fromurl传参入库的
但是这里我无论怎么改fromurl参数,数据库里面的url2值也不变。 后来才发现,没入库的原因在没把参数请求完整 首先这里有个判断语句,如果没有这四个参数则返回back
并且还需要个Pay参数
最后post的数据就会入库
但是这个文件并没有调用数据库查询,因为是订单的相关文件,于是搜索order,看哪个文件调用了数据库查询,发现根目录下的showresult.php文件调用了数据库(如果这里不利用搜索order来找到文件,也可以用其他办法,比如一开始发现url2入库的地方是在添加订单那里,那一般表名都是order,或者是搜索url2列在哪个表里的话,也能发现在订单order表里。
又或者是,因为一开始发现是fromurl参数有漏洞,那么他最后赋值给url2变量有漏洞,也就是说某个表里的url2列的字段值有漏洞,最后再搜索哪个文件调用查询了这个表即可)
直接把key作为参数即可从数据库开始查询。那么如果url2或者其他参数有问题,变成了sql注入语句的话,就可利用恶意语句查询敏感信息。
|