长度过滤绕过前置知识相关命令
>和>>符号
命令换行符
ls -t命令
sh命令
dir、*、 rev命令
>和>>符号作用
通过>创建文件,写入内容
123# > a 创建文件# echo "benben" > a 将benben写入a文件中# echo "aaaaaa" > a 将aaaaaa写入a文件,覆盖掉a文件中的原内容,
通过>>来追加内容
1# echo "benben" >> a 在原来文件后面的内容追加benben
命令换行符\换行符
1234c\\at flag.php(前面有一个空格) 作用和 cat flag.php一样
ls -t命令作用
将文件名按照时间顺序排列出来
ls排序按照先符号后数字再字符
sh命令shell命令语言解释器
作用
执行交互式命令用户可直接在终端输入命令,sh 会逐行读取并执行:
1sh -c "echo Hello, World!" # ...
链接符
;
&
&&
|
||
;使多个命令按顺序执行,前面的命令和后面的命令都会执行
1?cmd=id;pwd;ls 命令会按照顺序进行,无论命令是否出错不会影响其他命令的正常执行
&使命令在后台运行,这样就可以同时执行多条命令
使用时必须进行URL编码
12?cmd=&id 无法执行?cmd=%26id 正常执行
1?cmd=id&pwd&ls 命令同时执行,无论命令是否出错不会影响其他命令的正常执行
&&如果前面的命令执行成功,则执行后面的命令。
如果前面命令执行失败,则后续命令不会执行
使用时必须进行URL编码
12?cmd=ls%26%26id 正常执行?cmd=ls666%26%26id 无法执行
|将前面的命令的输出作为后面命令的输入,把前面命令的结果当做后面命令的参数;
前面的命令和后面的命令都会执行,但只显示后面的命令执行结果
123输入 echo "ls -l" 输出 ls -l输入 /bin/bash -c ls -l 输出目标目录文件名输入 e ...
好多啊WC
无字符数字绕过异或绕过^如果a、b两个值不相同,则异或结果为1。
如果a、b两个值相同,异或结果为0。
$_变量名因为是无字符绕过,没有数字和字符使用,所以可以用_作为变量
举例
计算 "5" ^ "z"
“5” 的 ASCII 码:0x35(二进制 00110101)
“z” 的 ASCII 码:0x7A(二进制 01111010)
逐位异或运算:
1234"5" (00110101)"z" (01111010)-------- XOR"o" (01001111) → 0x4F → ASCII 'o'
最终结果 01001111 是 0x4F,对应 ASCII 字符 'o'。
可用脚本生成异或绕过payload
例题
PHP5通过url提交要进行url编码
PHP7
取反绕过~()
脚本
PHP5利用中文字符
利用URL编码
12345GET提交?cmd=$_=~("%9e%8c%8c%9a%8d%8b" ...
eval 和system的纠纷问题:
系统执行语句eval($cmd)时
当输入$cmd=system(cat flag.php)无法执行 ,输入$cmd=system("cat flag.php")正常执行
系统执行语句system($cmd)时
当输入$cmd=cat flag.php正常执行,输入$cmd="cat flag.php"无法执行
原因:
根本区别:eval() vs system()
eval():要求参数是合法的PHP代码字符串。
system():要求参数是合法的Shell命令字符串。
eval()
执行的是 PHP 代码
PHP 解析逻辑
cat 和 flag.php 会被 PHP 视为 常量(未定义则报错)。
system(cat flag.php) 会被解析为 system('cat', 'flag.php'),导致参数数量错误。
输入 $cmd=system(cat flag.php) 失败原因:
eval()会将字符串作为PHP代码执行。此时参数 cat flag.php 未用引 ...
0x01 命令执行危险函数system()函数system()函数有回显,只是要通过查询源代码才能看到
123456<?phphighlight_file(__FILE__);$cmd = $_GET["benben"];if(isset($cmd)){ system($cmd);}
观察题目,只是一个命令执行,没有任何过滤。
直接执行ls查看文件,再用cat flag.php获取flag
(关于为什么这里执行不用带””引号可以查看我的另一篇文章奇奇怪怪的问题 | FLYFISH)
exec()函数exec()函数要将命令执行内容存在数组中,再用print_r($array)输出
123456<?phphighlight_file(__FILE__);$cmd = $_GET["cmd"];exec($cmd,$array);print_r($array);?>
分析过程如如上题
直接执行ls查看文件,再用cat flag.php获取flag
passthru()函数用法和system()类似,也是 ...
常见函数12system exec passthru shell_exec 反引号 popen proc_open pcntl_exec
注意点:
如何运行
运行条件
参数
是否有回显
systemsystem(string $command,int &return_var=?)
作用
执行命令语句并输出回显
参数:
command:执行command参数所制定的命令,并且输出执行结果
return_var:如果提供return_var参数,则外部命令执行后的返回状态将会被设置到此变量中
有回显
参数
———>
回显
提交命令
返回结果
举例
123<?php$cmd = $_GET['cmd'];system($cmd); // 直接执行并输出,如?cmd=ls
execexec(string $command,array &$ouput=,&return_var=?)
作用
执行命令并存储在数组中
参数:
command:执行command参数所制定的命令,并且输出执行结果
output:用命令执 ...
过滤函数preg_replace
preg_replace('A','B',$cmd) 若$cmd含有A中的内容,则被B替换
preg_replace('/<.*?>/', '', $user_input); 过滤了<.*?>
preg_replace('# #','',$cmd) 过滤了空格,将空格直接从$cmd中删除
空格过滤绕过绕过方法大括号{cat,flag.txt}
{A(命令),B(命令执行参数)}
1?cmd=system('{cat,flag.php}')
$IFS代替空格
可用**$IFS** ${IFS} **$IFS$9**代替空格
在Linux下,以上环境变量可以起到空格的作用
直接使用**$IFS可能被Linux认为是参数,因此可以使用${IFS}**来确保起到空格作用
1?cmd=system('cat$ ...
主域名资产收集
SRC给定的资产——官方文档
企查查
知识产权–>备案网站
小蓝本
[ICP备案信息](备案查询 - ICP备案查询网)
先通过网站jd.com查询备案号,再通过备案号京ICP备11041704号查询域名
小程序资产收集
微信搜索
企查查
APP资产收集难度大,最后测试
应用商店直接搜索
企查查
小蓝本
七麦数据
子域名资产收集
fofa
hunter
子域名收集语法domain.suffix="jd.com"
oneforall
123python oneforall.py --target example.com runpython oneforall.py --target example.com run --alive
CRT
https://crt.sh/?q=域名?
资产探活
httpx
http.exe -l url.txt -mc 200,302 -title -o result.txt
指纹识别
ehole
ehole.exe finger -l url.txt -o result.xlsx
...











