加载中...

【Root-Me】 SQL injection - string



SQLi 水题。关键是找到注入点。

查看页面源码,发现这题其实是有 3 个页面的:

虽然三个页面都有数据库查询操作,但是测试发现注入点在 ?action=recherche 页面。


首先确认数据库类型,输入 payload :'exp error' 故意不闭合引号,尝试令 SQL 报错。

通过页面回显的异常信息,可以确认是 SQLite3 数据库。

在 SQLite3 中只有一个系统隐藏表 sqlite_master ,其表结构如下:

CREATE TABLE sqlite_master (
    type TEXT,
    name TEXT,
    tbl_name TEXT,
    rootpage INTEGER,
    sql TEXT
);

这张表存储了数据库中每个数据表的信息,可以通过它找到其他数据表。

构造跨表查询 payload :exp' or 1=1 union select name, sql from sqlite_master --

从中找到账户表及其表结构 users (CREATE TABLE users(username TEXT, password TEXT, Year INTEGER))

进一步构造 payload 跨表查询 users 的账号信息:

exp' or 1=1 union select username, password from users --

得到 admin 的密码,完成挑战。


答案下载

flag 下载后的 flagzip 的文件需要手动更改后缀为 *.zip,然后解压即可(为了避免直接刷答案)


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