[CISCN2019 总决赛 Day2 Web1]Easyweb
不允许出现php的字样,用短标签绕过
短标记是用来输出变量或表达式,一般用法是短标签开启short_open_tag = On,配置文件:php.ini
短标记是用来输出变量或表达式,一般用法是
<?=$a?>
<?=(表达式)?>
就相当于
<?p[……]
不允许出现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[……]
与SQL相似,XXE漏洞也分为有回显和无回显
有回显,可以直接在页面中看到payload的执行结果或现象。
无回显,又称为blind xxe,可以使用外带数据(OOB)通道提取数据。即可以引用远程服务器上的XML文件读取文件。
解析xml在php库libxml,libxml>=2.9[……]
先直接访问index.php无效,然后发现界面有类似robots.txt的目录存在
说是假的flag,但是robots.txt的hint有新的目录fl4g.php
分为三层,中间有些乱码不重要
第一层
传入num,在intval函数里面数字需要小于2020[……]