phpok 最新版sql注入打包

文章目录

漏洞作者: 路人甲

网站在初始化的时候会装载一些资源引擎,其中装载了一个session_file.php,用于初始化session

$session_id = isset($_POST[$sid]) ? $_POST[$sid] : (isset($_GET[$sid]) ? $_GET[$sid] : “”);

这里$session_id 直接从get或者post中获取,没有进行任何过滤.

$this->sessid = $session_id;

然后保存$session_id。

再看文件framework/www/cart_control.php:

这里调用了一个cart_id的方法,其中第一个参数 就是$this->session->sessid()

可以看到 $this->session->sessid() 实际上就是之前的$session_id值。

再看方法cart_id

$sql = “SELECT id FROM “.$this->db->prefix.”cart WHERE session_id='”.$sessid.”‘”; 这里直接将$sessid带入到sql语句中直接,再未开启GPC的情况下,可以实现sql注入。但这里面没有回显,报错也被关闭了,可以利用时间盲注。当然我们还可以利用二次注入,且看下面:

在cart_control.php中:

这些方法中都用了$this->model(‘cart’)->get_all($this->cart_id);

可以看到cart_id带入到了sql语句中,这样二次注入就可以实现了

poc:index.php?c=cart&PHPSESSION=%27%20union%20select%20%27%5C%27%20union%20select%201%2C2%2C3%2Cuser%28%29%2C5%2Cdatabase%28%29%2C7%23%27%23

21123444879139c7cb1fe468360366485ba6bfdf[1]

 

同样的漏洞还出现在 order_control.php:

原文链接:,转发请注明来源!

发表评论

要发表评论,您必须先登录

  • 2 Responses to “phpok 最新版sql注入打包”
    • Jesse

      官方仅仅是只打了正则过滤的补丁吗?
      if($session_id) //&& preg_match("/^[a-z0-9A-Z\_\-]+$/u",$session_id))
      我测试了一下:
      $sql = "SELECT id FROM ".$this->db->prefix."cart WHERE session_id='".$sessid."'";
      $rs = $this->db->get_one($sql);
      dump出来sessid这个变量里面的数据是转义过的,%27会被转义成\"
      我的server没有magic_quote_gpc