CTF-Bugku-分析-信息提取
最近刷题的时候看到了这道比较有趣的题。而且网上也没找到wp,所以分享一下我的思路。
信息提取;
题目链接:http://ctf.bugku.com/challenges#信息提取
下载文件
先用wireshark打开流量包看看是什么。
只有http和tcp的包,我们只关心http包,所以我们在过滤中输入http,只显示http内容。
粗略的看一下,结合题目的提示“sqlmap用过吗”,可以看出这是一个布尔盲注的过程,从sql注入检测,猜解数据库,表名...
一位一位的猜取flag,然后用二分法判断其ascii码的范围并最终确定这一位的值。
第806个包是读取flag第一位的数据包。
为了更明了的查看语句,可以导出对象查看
将其payload解码一下是这样的,判断其ascii码是否大于64
我们可以以64这个ascii码为一个字符的分界线,我们不需要看返回值,只需要往下看到下一个64就能判断ascii码是什么,我们以第一个字符为例,可以看到第一个字符判断的时候,先判断其是否大于64,后面又判断了是否大于96,说明这个字符肯定大于64,所以此时作比较的ascii码增加64的二分之一,即96,接着向下看,作比较的ascii码变成了80,说明这个字符小于96,所以大于64又小于96,继续向下分32的二分之一,即80,在接着向下看,作比较的ascii码变为了72,说明这个字符依然小于80,继续向下分16的二分之一,即72,继续向下看,作比较的ascii码变为了76,说明这个ascii码大于72,所以向上分8的二分之一,即76,继续向下看,作比较的ascii码变为了74,说明这个ascii码小于76,所以向下分4的二分之一,即74,继续向下看,作比较的ascii码变成了73,且下一个包变为了64,说明已经判断结束,因此大于72又不大于73,这个ascii码为73,对应的字符为I。这就是二分法。
以此类推,其flag为ISG{BLind_SQl_InJEcTi0N_DeTEc***}(我建议还是自己做一下的好,哈哈)。本题需要一定的耐心和SQL注入基础,虽然没很绕,但是也是个体力活。