2019年ISG“观安杯”web最后一题

环境搭建

Docker-compose搭建的php+nginx+mysql。

实战

1.请求首页,发现跳转

2.请求包中将cookie中的“admin=0”改为1。

3.继续观测cookie,发现参数key的值为32位的数字与a-f,猜测hash,尝试解密。

1
2
3
fff56426453c85e36a540f9b50285a48------->k=md
701da2575d85df1f5e78fcdfc3bb7cac------>5(ad
eaedf9b247355ae4f14a30793aaeb786----->min)

拼接后,发现k=md5(admin)

4.通过将k=c4ca4238a0b923820dcc509a6f75849b进行替换,增加等尝试,发现增加后,可正常进入。

注:这里有点坑。。。最开始一直把md5(admin)代进去,怎么试都不行,无耐去看源码,将md5(1)加到cookie中。

5.打开新链接。土拨鼠一只。

news页面。

hint页面。

6.很容易判断出每个页面可得出一个key。

6.1下载大老鼠图片,打开就能看到其

key1:(65ef2aa20ce8a5c16b7a1a4046ff9557)

6.2new页面显示的推测ascii码,转化为字符串,并做偏移。

1
2
3
4
5
6
7
8
str=[65,79,86,77,89,87,79,00,94,89,00,51,61,49,00,11,00,85,79,99,29,36,18,76,33,27,28,35,28,35,27,32,78,34,76,80,77,27,33,27,34,75,30,29,27,77,33,76,30,80,75,28,34,26,75,79,32,19]
for i in range(1,100):
for ii in str:
if(str== 0):
print(" ",end='')
else:
print(chr(i+ ii),end='')
print("")

发现key值。key3:(b71292916d8bfc1718a431c7b4fa280ae6)

6.3跟据hint页面提示,打开robots.txt。

搜索该文件中包含的敏感字符串,发现没有。

用二进制打开,发现相关字符串。。。。用0字节填充了。。。

7.代入3个key

8.访问该链接。自动跳转url

9.跟据线索,访问该链接

10.继续跟进。

提交任意数据,请求302跳转。

多次提交,发现人数遂次加一。看到注释提示,请求参数有参数,猜测有注入,对name进行fuzz,确认注入点。测试只有1列。

进行注入:发现列名为uid,并查看内容。

1
2
3
4
" union select group_concat(schema_name) from information_schema.schemata --+     ---->information_schema,chiji,mysql,performance_schema,sys 
" union select group_concat(table_name) from information_schema.tables where table_schema='chiji' --+ ---->isguser,person
" union select group_concat(column_name) from information_schema.columns where table_name = 'person' ----->>one_id,name,uid
" union select uid from person --

用uid删对手:

删到最后一个时,显示“book=c65e1e6e7c352f7f7f7f9b065c2ee56d”,此时继续将其代入。发现在请求体中没用,,在cookie中加入可返回新链接。

11.打开新链接

注册用户后,查看info信息,越权修改用户到admin

看到admin信息,重置密码,给出新链接,打开,看到flag

总结

总的来说,这次比赛的题主要针对甲方,利用的技术其实都不难,就是总想不到ctf出题人什么脑回路,一个坑过不去就进死胡同。