先上注入结果图:
SQL注入流程:
1.插入注入代码(goods_attr)至订单商品(/wholesale.php可以插入,即商品批发页面,这里的goods_attr和 WooYun: ecshop最新版本前台二次注入系列(1) 里goods_attr_id是不同的,之前的漏洞即正常在商品页面加入购物车是不能控制goods_attr的,当时goods_attr从数据库商品属性表读取)。
2.将1生成的订单在用户中心订单查看页执行“放回购物车”操作。
3.查看购物车页面,注入代码执行
代码分析:
1./includes/lib_order.php get_cart_goods()方法(读取购物车的商品),1626行起
2. /wholesale.php 160行起(将商品提交到购物车,实际上是提交到了$_SESSION)
3./wholesale.php 380行起(act=='submit_order'), 将$_SESSION里的数据写入订单
4.到3为止,已经可以将注入代码写到订单商品表(order_goods)里了,接下来就是进入购物车数据表,在用户中心查看订单时有个"放回购物车"操作,可以将订单商品放到购物车数据表(cart)里,然后在查看购物车页面/flow.php即能看到注入结果了(见1的代码分析)
/includes/lib_transaction.php return_to_cart方法 854行起