某个师傅出题,让我过去瞅瞅,我就过去瞅了两眼,做了一下web和misc。大佬们太强了,我太菜了。下面放一些比较花时间的题目:
misc

说简单也挺简单的,写个脚本爆破就行。这里主要涉及到hashlib库。脚本附上:python3和python2的都有
脚本要跑20分钟左右,跑出来结果是CdHsh,嫌时间长的可以把除了这几个字母以外的全部删掉,嘻嘻。
#coding:utf-8 python3
import hashlib
flag = ''
print(1) #主要检验是否已经开始跑,代码跑的时间有点长
q = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
for i in q:
for j in q:
for k in q:
for l in q:
for m in q:
flag = i+j+k+l+m
#print(flag)
md5=hashlib.md5(flag.encode(encoding='UTF-8')).hexdigest() #python3是这么写的
#print(md5)
if md5[0:4] == 'b996' and md5[29:32] == '3e2': #这里要注意后面的这个,可以写成[-3:],不要写成[-3:0],我说我怎么跑不出来 /手动哭泣
print (flag)
print('1') #判断循环结束,不管跑出来没跑出来我们都能知道结束了
#coding:utf-8 python2
import hashlib
keyword1="3e2"
keyword2="b996"
key = ['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M'] #这里用列表实现,但是打字比较麻烦,不建议使用
for i in key:
for j in key:
for k in key:
for l in key:
for m in key:
word = str(i)+str(j)+str(k)+str(l)+str(m)
flag=hashlib.md5(word)
if flag.hexdigest()[-3:]==keyword1 and flag.hexdigest()[0:4]==keyword2:
print flag.hexdigest()
print word
web
1.serialization-1(序列化)

题目如下:

首先判空,如果不为空,那就执行反序列化操作。然鹅标题是赤裸裸的序列化(提示很明显),那么我们应该对一个东西进行序列化。(反序列化的逆操作)
具体代码如下:
<?php
class Test{ private $a = 'aa';} //对Test类进行操作,只需要改$a,如果不放心照抄原题的也行
$a= new Test(); //先new一个变量
$b = serialize($a); //先序列化
echo urlencode($b); //这里输出,如果直接输出,会出现一些字符不能展示的情况,这时候就需要url编码一下
?>

然后直接get传值一个?data=O%3A4%3A%22Test%22%3A1%3A%7Bs%3A7%3A%22%00Test%00a%22%3Bs%3A2%3A%22aa%22%3B%7D 就完事了

2.矛盾

先代码审计,看懂大概意思是要上传f1,f2,f3,其中f2=0,f1既要等于0又不能等于0,f3等于0而且f3的MD5值也要等于0,。
对f2进行分析:post一个f2=0就行了,很简单。
对f1进行分析,因为该比较是弱比较,所以既要等于0又不等于0只要是一个以0开头的字符串就行,比如0a。
对f3进行分析,同理,只要一个以0开头的字符串,并且md5等于0就行。
写了个脚本,发现0vbcf的MD5值是以0开头的,那就get传f1,post传f2,cookie传f3(可以使用火狐插件,也可以使用BP抓包修改)

脚本附上:
import hashlib
flag = ''
q = "qwertyuiopasdfghjklzxcvbnm"
for i in q:
for j in q:
#for k in q:
#for l in q:
#for m in q:
flag = '0'+i+j #+k+l+m #这里主要是调整你需要是位数,不够自己加哈
md5=hashlib.md5(flag.encode(encoding='UTF-8')).hexdigest()
if md5[0:1] == '0':
print (flag)
print(md5)

网友评论