WEB
- ics-06
这题进入就是这个页面
试了一圈,只有报表中心这个页面能够进入
看到url存在id=1这个键值对
反复多次随机尝试修改id的值,发现页面没有变化
但是其他页面又无从下手
以为其他页面没跳转的原因是因为中间有个页面中转回来
所以尝试抓包
但是并没有抓到
倒回来继续研究这个唯一一个能打开的页面
最后还是觉得得从这个id下手
选择用burpsuite进行爆破
结果还真给爆出来了
打开这个长度最长的看回显
发现
- unserialize3
进环境就看到下列php源码
class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=
__wakeup()是反序列化的一个魔术方法
直接手搓也能得到现在的序列化内容
?code=O:4:”xctf”:1:{s:4:”flag”;s:3:”111″;}
如果直接传上这个code内容
会直接导致exit并返回“bad requests”
这种时候就需要让__wakeup魔术方法无法执行
直接将属性数目值随意篡改即可
即,将 {} 前的数字1改为任意数字即可
于是得到
- Backup
这道题很有意思
这题一开始思路就走错方向了,明确说了是备份文件,是考备份文件url后缀的题
但是把我选择先打开源码看链接
得到的是无效的代码页面
很是遗憾
弄来弄去无果,选择了去看别人的WP
发现了还有备份文件后缀这种玩意
所以将所有常见备份文件的后缀进行保存
以便后来使用
最后基本思路就是在url后面
加个.bak就好了
最后得到flag
- Cookie
这题有点吃了不熟悉F12的亏了
基本思路就是在下放的网页的url后面加
/cookie.php
这个好想的
因为打开F12看到cookie栏
有个look here
这个的值就是cookie.php
但是很简单的点就在于需要看到这个页面的标头
里面有个很明显的FLAG
- disabled_button
这道题F12后被难在了如何更改源码上
汗颜,才知道原来是靠审查才能改源码
但是我并不了解为什么是删去disabled
可能是题目提示吧
之后看看原因
- Get-post
Get请求牢记在url后面加个?name=value就好
例如
目标url?a=1
就完成了get请求
Post请求可以通过hackbar完成
用post data就好了
Post data选项勾上后,输入框直接写键值就好了
例如
B=2
- simple_php
很奇怪的一道题
源码就如上图所示
很标准的php相关的题
GET请求有之前的经验
?加键值对就行了
但是吧,它的IF条件判断语句很有意思
if($a==0 and $a){
echo $flag1;
}
if(is_numeric($b)){
exit();
}
if($b>1234){
echo $flag2;
这个很明显就是要两段flag拼凑嘛
但是在要flag1时
A=0这个键值不被承认
于是在我写下/?a=0 b=1235的时候,原以为会出现两个flag
实际上只出现了flag1
根本原因就是
它默认将我的0 b=1235认为是一段字符串
所以能够得到flag1而没有flag2
这也说明了get请求没法同时依靠url进行传参处理
查询攻略,发现需要用两次来进行请求
而第一次要求是一个带0的字符串
而第二次要求是一个数字在前且数字必须大于1234的一个字符串
这样才能得到flag
至于第二次的要求
全部来源于(is numeric($b))
- command_execution
Linux ls(英文全拼: list directory contents)命令用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录)。
本题题目有个ping和waf说法
找了一圈没发现什么办法
无奈只能因为第一次接触选择看攻略
后来才知道ping指令是Linux里面的
所以在题目所给的网页环境中
需要我们使用Linux的指令语句
我们先尝试着ping一个IP地址
这里先尝试使用本机地址192.168.1.1
响应很慢,但仍然能得到反应
后续多次尝试发现响应不了了
原因是延迟太高,丢包严重
于是现在连接本地网卡IP
127.0.0.1
得到以下响应
存在这样的三个包
我们大致会有一个把握
进行find搜索文件
直接搜索flag
键入127.0.0.1;find / -name ‘’flag*‘’ (这里是单引号,且name和值之间有个空格)
得到
Flag文件的路径就被找到了
接下来使用cat指令完成后续操作即可
也就是
127.0.0.1;cat /home/flag.txt
得到目标flag
- weak_auth
这个题目很有意思
首先随便编造一个username去进行拦截
拦截的话用burpsuite就好了
然后由于是常用弱密码
我们自己通过下载的字典和burp suite的sniper功能进行密码爆破
我们拦截到包时
必须要保证出现$username=
$password=
这俩会出现在拦截包的末尾
在password=的末尾处
添加一个payload点
选定相应的弱密码字典
进行爆破
爆破结束后
查看返回字符最多的那个弱密码项
发现是123456这个弱密码
于是以此为密码进入网站内部
得到flag
注:在原网站看F12可以得知是弱密码类型,且username是admin
如果不知道username
可以添加两个payload点位
然后挨个爆破
但是没有实操过
以后做到了再补充
- Xff&referrer
这个题又是新知识
考的就是这方面的内容
先进入题目环境
要求IP地址为123.123.123.123
题目有提到伪造xff和referer
`X-Forwarded-For`(通常缩写为 `XFF`)是一个HTTP扩展头部字段,用于在HTTP请求通过代理服务器或负载均衡器时标识原始请求的来源IP地址。这个头部字段通常由代理服务器添加或更新,以确保最终的服务器能够知道原始客户端的IP地址,而不是代理服务器的IP地址。
所以XFF就是用来伪造IP变成123.123.123.123的
而我们先将拦包内容发送到repeater(在burpsuite环境做题)
我们先加个XFF进行发送尝试
选择发送请求
得到响应内容
这里出现了部分响应内容
Document.getElememtById(“demo”).innerHTML=” https://www.google.com”;
去进行搜索得知,这个指令是让
那么我们要进行的伪造referer就是目标url了
而referer是什么?
它用于指示一个请求是从哪个页面发起的。具体来说,它包含了一个URL,这个URL是用户点击链接或提交表单从而发起当前请求的页面地址。
- PHP2
这道题很有特色
- 要注意的是通过index.phps查看到页面的php源码
- 审计源码,发现需要通过get方式传入一个参数 id=admin
- Admin直接传入参数会被直接先一步报错,所以不能直接传参admin
- 根据这个原因,对admin这个值进行url编码,而浏览器可以直接解码读取这个参数而不触发报错机制
- 由于浏览器会直接解码,所以直接传入第一层加密密码还是会报错,所以对加密后的再一次进行url编码,并传入该值作为id的值
MISC
- Railfence
有个叫做Railfence的网站,有栏目需求
实际上基本加密原理很简单
中文译名是栅栏加密
常规点的密码形式就是靠字母直接分栏做到的
比如gsfsafafatgfa afaggarfarat
这两栏写为两排对齐
然后从左往右从上往下读即可
- gif
这题给了一个压缩包,里面是黑,白两种方块状的图片,交替起来共103张图片
第一反应是组合成二维码,每个图片块是一个二维码的小块,但前四个图片打开后展现的情况是白黑黑白
如果是二维码,不管是什么排列方式,前面几张都应该是黑,就算有多截一圈白色方块,如果从上往下,从左往右的标准排列,也该是白白白白······ · · · ·
而其他排列方式也都会出现类似的同色连续的情况
所以排除二维码组合
(之后了解到,二维码的像素块是21*21=441,实际上这个也确实组不了二维码。。。。)
所以开始思考第二种思路
黑白的块,考虑摩斯密码,分别代表 · – 什么的
但输出结果不对
实际上看前四个代码的时候就有种莫名熟悉的感觉,白黑黑白,换一下表达方式也就是0110或者1001,实际上f的二进制就是01100110,二进制转文本试试看 得到
- 如来十三掌
这道题确实有点考察实战经验了,开局给的是个佛曰的密码
密码还是很常规,但是解码出来的玩意很明显不是作为flag的内容,出于尊重出题人的恶趣味可能,选择改成对应的flag格式进行回答,显示回答失败,意识到可能并没有解决完成
考虑到市面上有多种佛曰工具,大致上都试了一下,发现其他解密工具都不认可这是佛语
很快意识到还有一层加密
选择对解密后的密文进行搜索
有说用rot-13进行解码,一种此前还没遇见过的新的加密类型
搜索在线rot-13解密网站
得到一串新的字符串
此时又进行尝试按照flag格式进行提交,但仍然显示错误
说明仍然试密文形式
新的字符串并没能想到往什么思路解密
最后反复尝试,很惊讶的发现是依靠base64进行解码
但是base64的特征是结尾的==
对于这种密文该如何敏感的进行察觉是个很有必要学习的方向
- give_you_flag
GIF隐写,讲道理是需要抽帧去看GIF中的二维码出现的那帧的,但是莫名其妙的stegsolve里面的GIF文件没法抽帧,估计是我自己配置有问题,期待之后进行解决,这里的解决方法是通过使用录屏的方式获得某帧的二维码,比较简单粗暴
但是得到的抽帧二维码是残缺的
补上三个二维码定位点就好了
最后使用二维码在线识别工具进行识别就可以了
- 坚持60s
看到是个jar文件,想到去java去编辑,但没找到java编辑器被放哪了
于是选择上虚拟机寻找Java的编辑环境
但是仍然没有找到
遂放弃直接看别人的WP
惊讶于有一个叫做ju-gui的一个软件,可以查看java程序的源码
直接看源码就得到了对应flag的一个条件判断语句
但是,得到的flag直接进行提交的时候存在问题,显示不是正确答案,观察发现是个密文,通过base64解码就可以得到正确flag
不知道为什么,你写得很搞笑((ノ°ο°)ノ