[BJDCTF2020]EzPHP
这道题考点特别特别多,看了许多师傅的WP终于大概理解了这道题
开题看到这个–GFXEIM3YFZYGQ4A=
全大写,还有“=”号,base32
解密之后是1nD3x.php
直接访问,发现是源文件
多重代码审计,一个一个看
(1)
&[……]
这道题考点特别特别多,看了许多师傅的WP终于大概理解了这道题
开题看到这个–GFXEIM3YFZYGQ4A=
全大写,还有“=”号,base32
解密之后是1nD3x.php
直接访问,发现是源文件
多重代码审计,一个一个看
(1)
&[……]
不允许出现php的字样,用短标签绕过
短标记是用来输出变量或表达式,一般用法是短标签开启short_open_tag = On,配置文件:php.ini
短标记是用来输出变量或表达式,一般用法是
<?=$a?>
<?=(表达式)?>
就相当于
<?p[……]
考点
1.git泄露
2.githack下载源码
3.变量覆盖
输出变量$handsome,满足条件$_GET[‘flag’] == = $x && $x !=== ‘flag’
?handsome=flag&flag=x&x=fla[……]
让我们输入商品ID和价格去购买,那肯定是尝试输入flag去请求
没有这个请求,那只有尝试用它原本的商品ID–1、2、3、4
还是错误请求
直到第四个
只允许一个字符可以购买
换句话说,一个字符要代表比1337大
在unicode编码里面有一些[……]
仅有一张图片,没有什么可以去操作的。F12看源码
href提示有一个目录
看到最后的unserialize就知道是反序列化,先分析一下代码
1.需要我们输入data参数,之后将data参数反序列化执行,有一个类HelloPhp
2.类里面要构造两个参数a,b.并且因为[……]
先点一个买试试,发现是真的二维码,我就不去扫了,肯定不是这样出解。
那我先去查看源码
纳尼,意思是我们的md5传入这个就会是验证通过,同时下面还给了一个目录/flag.php,先访问看看
这句话有点意思,只有两个人的IP可以看到,一个是购买的,一个是它本人–它本人就是[……]
位置混乱看不太清直接查看源代码
引入两个模块,一个flask,一个os。
然后用app.route装饰器传了两个路径,测试访问一下这个路径
发现显示到了上面,尝试模板注入
如果没有黑名单的时候,我们可以传入 config,或者传入{{self.dict}}获取,但[……]
打开连接,发现啥也没有,只有一句话在那,看了源码、抓包数据也没发现啥,用dirsearch目录扫描一下,间隔设置为0.1线程设置为1,防止429,就是跑得比较久
根据扫描结果可以推断是泄露了git文件,可能导致源码泄露
还原之后
1.if (!preg_match(‘/da[……]