【攻防世界】二十四 --- FlatScience --- SQLite注入

本文介绍了CTF挑战FlatScience的解决过程,涉及SQLite注入。通过扫描发现登录界面存在注入漏洞,使用sqlmap获取数据。根据hint提示,结合页面源代码解析密码。利用SQLite系统表信息查询表结构,最终解密获取flag。
摘要由CSDN通过智能技术生成

题目 ---- FlatScience

一、writeup

主页如下所示
在这里插入图片描述
使用dirsearch扫描到了下面几个关键目录:robots.txtlogin.phpadmin.php,剩下的目录就是一些pdf格式的论文了,目前还不知道这些论文有什么用,先放着(猜测这些论文应该是要爬取关键字用作字典的)。来看看login.php页面。是一个登录界面。
在这里插入图片描述
这里存在post注入,且数据库是SQLite3
在这里插入图片描述
由于不会SQLite3的注入方法,直接上sqlmap,执行:sqlmap -r http.txt --risk 3 --level 5 --dump-all --batch
得到了一些数据
在这里插入图片描述
这三个密码用john一时半会儿爆破不出来,根据admin中的hint字段的提示:my fav word in my fav paper?!。猜测密码就在之前的那些pdf文件中。这里还有一点要注意,login.php页面的html注释中有提示
在这里插入图片描述
加上一个?debug查询字符串可以看到回显的php代码
在这里插入图片描述
其中的php代码如下

<?php
// ob_start --- 打开输出控制缓冲。此函数将打开输出缓冲。
// 当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中
ob_start();
?>

<?php
if(isset($_POST['usr']) && isset($_POST['pw'])){
   
        $user = $_POST['usr'];
        $pass = $_POST['pw'];

        // 实例化一个访问数据库的类
        $db = new SQLite3('../fancy.db');
        
        // 加密方式:sha1($pass."Salz!")
        $res = $db->query("SELECT id,name from Users where name='".$user."' and password='".sha1($pass."Salz!")."'");
    if($res){
   
        $row = $res->fetchArray();
    }
    else{
   
        echo "<br>Some Error occourred!";
    }

    // 如果登录成功就设置cookie,在进行sql注入时回显的数据是在响应包的Set-Cookie字段的
    if(isset($row['id'
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值