login1

解题

head
head

题目提示:SQL约束攻击
网上查查资料不难发现,它的原理大概是这样子的:

SQL数据库在建造数据库之初,会限制数据的存储位数,例如用户名限制为10
而且,存储在数据库当中的数据,会自动将表数据后面的空格省略,自然就只剩下了前面的数据。
这种情况有一种前提情况,就是提供服务的网站提供注册时,用户名有没有唯一性,有没有限制为用户名的数据量大小

这种情况下的解题思路:
1.注册用户名时,使用admin 1进行注册,密码自定义为admin1A
2.使用admin+admin1A进行登录,得到信息或者flag

flag
flag

结论

SQL约束攻击

指限制SQL数据表的初始限制条件
指借着限制条件注册为超级用户

速度要快

解题

head
head
题目没提示多少信息,源码也只有简单的一句话。
尝试使用Python抓包,并且抓上头部信息
题目提示的“快”字的含义是:数据包是临时的,需要会话维持,即session。

def func(url):
nux = requests.session()
text1=nux.get(url)
print(text1.text)
print(text1.headers)
text2=nux.post(url)
print(text2.text)
print(text2.headers)

func('http://114.67.175.224:15467/')

body
得出flag的base64后,尝试解码
body
body
发现了这个有两层base64的大坑,根据观察,还发现了一点东西:它给出的base64的flag在实时刷新

也就是说,只要离开了session,flag就得重新生成。
那么不能将答案贴出来查base64的二次编码解码,只能在代码当中实现base64的两次解码

# 改进Python函数
def func(url):
index = requests.session()
x = base64.b64decode(index.get(url=url).headers['flag']).decode()
z = base64.b64decode(x.split(':')[1])
data = {'margin': z}
y = index.post(url=url,data=data)
print(y.text)

func('http://114.67.175.224:15467/')

flag
得到最终flag
flag

结论

Python request抓包
Python 抓包的时候需要抓取各个方面的详细信息。
Python base64解码

MD5

解题

MD5加解密网站
head
打开页面后,除了一句话,其他什么都没有

please input a

分析提示信息,应该是传入md5值到变量a。这里调用之前使用过的弱类型md5进行尝试。
直接爆出flag???
flag
flag

总结

md5碰撞,并且是哈希值为0的碰撞。