2099年的flag
题目类型:
http请求头
解题思路:
1.快捷方式查看代码,得到的线索:
用到的知识点如下:
Header | 解释 | 示例 |
---|---|---|
Accept | 指定客户端能够接收的内容类型 | Accept: text/plain, text/html |
Accept-Charset | 浏览器可以接受的字符编码集。 | Accept-Charset: iso-8859-5 |
Accept-Encoding | 指定浏览器可以支持的web服务器返回内容压缩编码类型。 | Accept-Encoding: compress, gzip |
Accept-Language | 浏览器可接受的语言 | Accept-Language: en,zh |
Accept-Ranges | 可以请求网页实体的一个或者多个子范围字段 | Accept-Ranges: bytes |
Authorization | HTTP授权的授权证书 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Cache-Control | 指定请求和响应遵循的缓存机制 | Cache-Control: no-cache |
Connection | 表示是否需要持久连接。(HTTP 1.1默认进行持久连接) | Connection: close |
Cookie | HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。 | Cookie: $Version=1; Skin=new; |
Content-Length | 请求的内容长度 | Content-Length: 348 |
Content-Type | 请求的与实体对应的MIME信息 | Content-Type: application/x-www-form-urlencoded |
Date | 请求发送的日期和时间 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
Expect | 请求的特定的服务器行为 | Expect: 100-continue |
From | 发出请求的用户的Email | From: user@email.com |
Host | 指定请求的服务器的域名和端口号 | Host: www.zcmhi.com |
If-Match | 只有请求内容与实体相匹配才有效 | If-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Modified-Since | 如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码 | If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
If-None-Match | 如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变 | If-None-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Range | 如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag | If-Range: “737060cd8c284d8af7ad3082f209582d” |
If-Unmodified-Since | 只在实体在指定时间之后未被修改才请求成功 | If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
Max-Forwards | 限制信息通过代理和网关传送的时间 | Max-Forwards: 10 |
Pragma | 用来包含实现特定的指令 | Pragma: no-cache |
Proxy-Authorization | 连接到代理的授权证书 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Range | 只请求实体的一部分,指定范围 | Range: bytes=500-999 |
Referer | 先前网页的地址,当前请求网页紧随其后,即来路 | Referer: zcmhi.com |
TE | 客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息 | TE: trailers,deflate;q=0.5 |
Upgrade | 向服务器指定某种传输协议以便服务器进行转换(如果支持) | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
User-Agent | User-Agent的内容包含发出请求的用户信息 | User-Agent: Mozilla/5.0 (Linux; X11) |
Via | 通知中间网关或代理服务器地址,通信协议 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
Warning | 关于消息实体的警告信息 | Warn: 199 Miscellaneous warning |
2.如果还不清楚没关系抓包看看更清楚\
3.所以修改这个就可以了
4.成功得到flag
找回宗门卷轴
题目类型:
敏感文件
解题思路:
1.查看源代码
发现他给了提示,以及part one flag
2.dirsearch 扫描铭感文件
-u 指定的网站发现敏感文件DS_Store
3.接着根据hit提示搜索
直接加在payload后面拿到第二段flag
MD5的秘密是什么
题目类型:
md5弱比较
解题思路:
1.ctype_alpha(string $text
): bool
查看提供的string,text
里面的所有字符是否只包含字符。
2.is_numeric(mixed $value
): bool
检测指定的变量是否为数字或数字字符串。
3.md5($getmySaid) != md5($getmyHeart)
只要两个数的md5加密后的值以0e开头就可以绕过,因为php在进行弱类型比较(即==)时,会现转换字符串的类型,在进行比较,而在比较是因为两个数都是以0e开头会被认为是科学计数法,0e后面加任何数在科学计数法中都是0,所以两数相等
md5('240610708')==md5('QNKCDZ0')
构造payload:
?user=1314520&mySaid=QNKCDZO&myHeart=240610708
4.文件包含:
最终payload:
http://124.160.107.92:28032/?user=1314520&mySaid=QNKCDZO&myHeart=240610708&md5=/flag.php
你是懂数组的
题目类型:
php代码审计array_search()函数
解题思路:
1.array_search()函数绕过
在数组中搜索给定的值,如果成功则返回首个相应的键名
2.构造payload
EzRce
题目类型:
命令执行
解题思路:
1.查看过滤的函数
<?php if(isset($_GET['payload'])){ $code=$_GET['payload']; if (!preg_match('/sys|ls|cat|tac|head|tail|more|less|php|base|echo|cp|\$|\*|\?|\+|\^|scan|local|current|chr|crypt|show_source/i',$code)){ echo '成功了吗?';echo '<br>'; eval($code); } else{ die("你好坏哦~~~~"); } } else{ echo "听说有手就行?"; show_source(__FILE__); }
2.eval()执行的是php命令
常见的执行系统命令的函数有
参考文章:PHP执行系统命令函数_Au.J的博客-优快云博客_php 执行系统命令
system() passthru() exec() shell_exec() popen() proc_open() pcntl_exec()
3.出现一个flag文件夹但是里面是假的flag那么往根目录查看
4.现在的问题是访问flag.php,但是php被过滤还有cat
我们还有其他试用条件
可以用sort试一下
通知全宗人危险来了
题目类型:
http请求头:
解题思路:
1.你是哪里的?
XFF可以识别客户端的ip地址
但是他括号了 本宗门了试试127或者localhost
2.gua语言
3.burp改post请求
我只修改了头不行,还添加了一行参数
Content-Type: application/x-www-form-urlencoded
4.关键词授权
5.
6.