WEB:
-
用菜刀连接
-
simple_php:
-
发现只有同时满足两个条件才可以呈现出完整的flag即a==0且if a 为真,b不是数字且b>1234才会返回。
-
经过查询"=="得出:php中的==首先进行类型转换,然后才会进行比较,经过查询php类型比较表得出,把a构造成'0'或'alph'这种转换后为0但本身不为Flase的形式。数字和字符混合的字符串转化为整数后只保留数字即12345s转换为整数后为12345。
-
构造为?a='0'&b=12345s
-
-
写了一个ping命令,但没有写waf,
-
命令执行漏洞(|;||;&& 这些是管道符)
-
command1&&command2:先执行command1,如果为真,再执行command2
-
command1 | command2:只执行command2
-
command1&command2:先执行command2,后执行command1
-
command1||command2:先执行command1,如果为假,再执行command2
-
-
-
··· ···
MISC:
-
直接就是一个flag:是flag的说明
-
有两种思路
-
将pdf转为word,然后把图片移动走,然后后面就有flag,
-
另外也可以通过将鼠标放在图片上,发现鼠标会变成光标,然后进行复制
-
-
将gif通过在线工具把gif的内容一帧一帧的解析出来,然后将有二维码的那一张下载出来,通过PS上二维码定位符,使其成为一个完整的二维码,然后通过在线工具解码,将解码后的flag就出来了
-
打开动态图,发现是一个个由黑白相间的图片,猜测可能代表二进制的信息,然后用python编写exp来进行将把信息转化出来
-
exp.py ------ from PIL import Image//image模块是再python PIL图像处理中常见的模块,对图像进行基础操作的功能基本都包含在此模块内 result = "" for num,i in enumerate(range(104))://enumerate()就是枚举的意思,enumerate(X,[start=0])其中函数中的X可以是一个迭代器或者一个序列,start是起始数值,默认从0开始,X可以是一个字典。num就相当于定义的是从start规定的为起始的下标,默认是从0开始的。 img = Image.open(f"{i}.jpg")//open()里面应该是添加图像的路径,如果前面有了一个f,那么在路径里面相当于可以有了一个{}括起来的变量。 im=img.convert("RGB")//将图像转化为RGB形式,以便输出RGB三色的值(,open打开的图像还自带一个透明的通道) r,g,b=im.getpixel((1,1))//分别赋予r,g,b当坐标点是(1,1)时的red,green,blue值 if r!=255: result += "1" else: result +="0" for i in range(0,len(result),8)://从0到103,以8为步长 byte=result[i:i+8]//算开头不算结尾,所以也就是0,1,2,3,4,5,6,7。 print(chr(int(byte,2)),end="")//把包含二进制内容的字符串先转化为int型,然后再转换为chr型,然后用print以""结尾输出出来。
-
-
密码学:看起来是十六进制的密文,通过转换发现有问题,然后通过C8的判断,发现是十进制的200,但是ASCII码只有128位,所以,应该对十进制的内容进行以下改变,将转换为的十进制数减去128严谨来说应该是%128,最有得到的十进制数都是小于128的,通过ASCII码进行转换,就可以得出结论。
-
exp.py ------ import re//re模块即是正则表达式模块 a = 'c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2' b=re.findall(r'.{2}',a)//括号内的r代表字符串,如果有b则代表字节,意思是以两个字符串为一组,返回到名字为b的列表中。 flag='' for i in b: flag += chr((int(i,16)-128))//将16进制的转换为int型,然后在转换为chr型,然后累加到str型的flag中 print(flag)
-
-
··· ···