题目 ---- FlatScience
一、writeup
主页如下所示
使用dirsearch
扫描到了下面几个关键目录:robots.txt
,login.php
,admin.php
,剩下的目录就是一些pdf格式的论文了,目前还不知道这些论文有什么用,先放着(猜测这些论文应该是要爬取关键字用作字典的)。来看看login.php
页面。是一个登录界面。
这里存在post注入
,且数据库是SQLite3
由于不会SQLite3
的注入方法,直接上sqlmap,执行:sqlmap -r http.txt --risk 3 --level 5 --dump-all --batch
得到了一些数据
这三个密码用john
一时半会儿爆破不出来,根据admin中的hint字段的提示:my fav word in my fav paper?!
。猜测密码就在之前的那些pdf
文件中。这里还有一点要注意,login.php
页面的html注释
中有提示
加上一个?debug
查询字符串可以看到回显的php代码
其中的php代码如下
<?php
// ob_start --- 打开输出控制缓冲。此函数将打开输出缓冲。
// 当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中
ob_start();
?>
<?php
if(isset($_POST['usr']) && isset($_POST['pw'])){
$user = $_POST['usr'];
$pass = $_POST['pw'];
// 实例化一个访问数据库的类
$db = new SQLite3('../fancy.db');
// 加密方式:sha1($pass."Salz!")
$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!";
}
// 如果登录成功就设置cookie,在进行sql注入时回显的数据是在响应包的Set-Cookie字段的
if(isset($row['id'