xctf一分题一日游

前言 ——来自目前只搞得定一分题的一分怪

好久没有更博客,都积灰了。今天来更一下。鉴于buuoj上的web和misc的1分题它不香了,于是今天选择了健康营养可放心食用的xctf新手区的一些题,不仅食用过程心情愉悦,还涨了许多新姿势。

Misc

give_you_flag

下载文件发现是一个动图,在Framework或者stegsolve里打开该文件逐帧查看,发现某一帧里有一个残缺的二维码

在这里插入图片描述

这个二维码是无法扫描的,因为最最关键的三个定位角被剪切了,当然由于一分怪没有下载ps,于是直接用截图工具将如下图的二维码的定位角截下

在这里插入图片描述

然后用画图工具把这三个定位角贴在待扫的二维码上,效果图如下:

在这里插入图片描述

扫码可得flag

如来十三掌

下载下来的doc文件里奇怪的文字实际上是一段佛经(由如来这个hint可以推测),放在与佛论禅这个网站里去得到

在这里插入图片描述

十三指的是ROT13编码(我也是看了别的wp才知道,这题是真挺需要脑洞)

在这里插入图片描述

然后发现解出来还是看不懂
但是我们可以发现字符串有52个,刚好可以被4整除,所以我们可以大胆猜测一下有没有可能是Base64编码。
经过base64编码后的字符串长度一定会被4整除(包括后缀等号)
放到base64网站解密可得flag

在这里插入图片描述

gif

下载附件后发现是一堆黑白照片,起初可能想到摩斯电码,但事实上它是二进制(我保持微笑)
在这里1是黑色图片,0是白色图片,可以采用一个一个人工转化但会比较慢所以我们采取写脚本的方式(此处参考该大佬的博客

white = open('D:/ctf/gif/0.jpg', 'rb').read()
black = open('D:/ctf/gif/1.jpg', 'rb').read()


flag = ''

for i in range(104):

    color = open('D:/ctf/gif/%d.jpg'%i, 'rb').read()
    if(color == white):
        flag += '0'
    else:
        flag += '1'


print(flag)

运行之后得到

01100110011011000110000101100111011110110100011001110101010011100101111101100111011010010100011001111101

然后放到这个网站去将这个二进制转成可打印字符即可得到flag,不过要记得八个字符一隔(其实说白了还是有点麻烦,于是我继续看了的刚刚提到的那个大佬写的脚本)

white = open('C:/Users/cherish/Desktop/gif/gif/0.jpg', 'rb').read()
black = open('C:/Users/cherish/Desktop/gif/gif/1.jpg', 'rb').read()
#print(white)

flag = ''

for i in range(104):
    #path = "'C:/Users/cherish/Desktop/gif/gif/" + str(i) + ".jpg', 'rb'"
    color = open('C:/Users/cherish/Desktop/gif/gif/%d.jpg'%i, 'rb').read()
    if(color == white):
        flag += '0'
    else:
        flag += '1'

ans = ''
length = len(flag)//8
for i in range(length):
    ans += chr(int(flag[i*8: (i+1)*8], 2))

print(ans)

转化成二进制之后直接变字符串了(菜鸡不得不跪)
在这里插入图片描述

Web

robots

题目提示是Robots协议,于是上网查了查资料
得到思路,首先我们应该先获取到robots.txt文本文件在这里插入图片描述
得到flag在flag_1s_h3re.php文件里,于是我们访问http://159.138.137.79:52428/f1ag_1s_h3re.php就可得到我们想要的的flag啦在这里插入图片描述

backup

打开题目发现提示在这里插入图片描述
先问了问度娘,查到如下新姿势在这里插入图片描述
于是访问http://159.138.137.79:54353/index.php.bak得到文件,用记事本打开在这里插入图片描述flag唾手可得

cookie

打开burpsuite抓包
在这里插入图片描述

访问http://159.138.137.79:53930/cookie.php得到提示在这里插入图片描述

让我查看响应包,于是去查看,不过要注意是抓第二个包(即下图中有颜色的这个包)在这里插入图片描述

打开就有惊喜
在这里插入图片描述

disabled_button

这个题是一个前端代码的签到题但是我开始一看也是一脸懵(一分怪的卑微)
F12查看源码
在这里插入图片描述
要想按动这个按钮,就把disabled=""删去即可(当然还有其他改法,可自行百度)
在这里插入图片描述
在这里插入图片描述
按下1分的按钮,flag就来啦
在这里插入图片描述

weak_auth

看题发现是一个登录页面,题目要输入用户名账号和密码,才可以得到flag。先随便输入一个账号密码,发现在这里插入图片描述
将账号修改成admin,输入一个密码,提示密码错误,突然看到题目提示,发现是弱口令,于是就burpsuite字典爆破吧,搜索了一下
在这里插入图片描述

在这里插入图片描述
于是就将登陆网站的数据包送到burpsuite的Intruder模块进行爆破
首先是选定攻击类型(attack type)

在这里插入图片描述
选择position,如下图步骤添加字段(即用户名和密码文档)
1.将Payload set选定1,然后添加第一个字段(已知的用户名)

在这里插入图片描述
2.将Payload set选定2,然后添加第二个字段(弱口令文档)

在这里插入图片描述
3.开始暴破,发现一个length不一样的“变异”品种
在这里插入图片描述

点进去查看响应包,flag就出来啦
在这里插入图片描述

simple_php

这是一个简单的代码审计题

<?php
show_source(__FILE__);
include("config.php");
$a=@$_GET['a'];
$b=@$_GET['b'];
if($a==0 and $a){     //此处是弱类型比较,可以考虑给变量$a赋一个字符
    echo $flag1;
}
if(is_numeric($b)){   //$b不能是数,可以考虑用用数组绕过,即给$b赋一个数组
    exit();
}
if($b>1234){
    echo $flag2;
}
?> 

这类题要想得到flag,就必须掌握各种绕过和漏洞,这个题主要是弱类型比较漏洞和数组绕过,具体的弱类型比较的见后文的学到的新姿势
于是我们就访问http://159.138.137.79:63960/?a=c&b[]=123
flag就出现啦

在这里插入图片描述

学到的新姿势

关于Robots协议 来源点这里

1.Robots协议规则
注意: 一个英文要大写,冒号是英文状态下,冒号后面有一个空格,"/"代表整个网站

2.Robots协议举例
禁止所有机器人访问
User-agent: *
Disallow: /
允许所有机器人访问
User-agent: *
Disallow:
禁止特定机器人访问
User-agent: BadBot
Disallow: /
允许特定机器人访问
User-agent: GoodBot
Disallow:
禁止访问特定目录
User-agent: *
Disallow: /images/
仅允许访问特定目录
User-agent: *
Allow: /images/
Disallow: /
禁止访问特定文件
User-agent: *
Disallow: /.html$
仅允许访问特定文件
User-agent: *
Allow: /
.html$
Disallow: /

关于弱类型比较 来源点这里

php中其中两种比较符号:
==:先将字符串类型转化成相同,再比较
===:先判断两种字符串的类型是否相等,再比较

字符串和数字比较使用==时,字符串会先转换为数字类型再比较

var_dump(‘a’ == 0);//true,此时a字符串类型转化成数字,因为a字符串开头中没有找到数字,所以转换为0
var_dump(‘123a’ == 123);//true,这里’123a’会被转换为123
var_dump(‘a123’ == 123);//false,因为php中有这样一个规定:字符串的开始部分决定了它的值,如果该字符串以合法的数字开始,则使用该数字至和它连续的最后一个数字结束,否则其比较时整体值为0。
举例:
var_dump(‘123a1’ == 123);//true
var_dump(‘1233a’ == 123);//false

python的用法 来源点这里
int函数的用法
int(num, base) 其中base指明的几进制
举例

int()               //不传入参数时,得到结果0
0
int(3)
3
int(3.6)
3
int('12',16)        // 如果是带参数base的话,12要以字符串的形式进行输入,12为16进制         
18
int('0xa',16) 
10 
int('10',8) 
8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值