东华杯布尔盲注
【原理】
sql布尔盲注原理
【目的】
加强个人渗透sql的能力
【环境】
python,ubuntu
【工具】
python
【前言】
之前自己对sql注入一直很不理解,于是上去做了东华杯some words一波,看了writeup花了n个小时才理解(我果然是最菜的。。),不说了,上题目。
各位大佬可以看看这个资源理解下布尔盲注原理 http://blog.csdn.net/squeen_/article/details/52767887
【步骤】
首先,这题判断过滤的特征是它回返回回显 stupid hacker233
所以试一波各种语句,发现过滤了很多,有单引号 等号 union等等,下面开始我的表演2333
步骤1: 爆数据库的长度
语句如下
?id=0 or length(database())>1%23 (网址我这里就暂时不打出来了,随时变化)
这个语句含义是id=0时,这个库名的长度是否大于1
如果不大于1的,它给你的回显如下
试试把1改成2,3,4,5,到5的时候发现回显消失,说明这个库命长度为4
步骤2: 爆数据库名称
语句如下
?id=0 or ascii(substr(database(),1,1))>119–
这语句的含义是以ascii的形式返回id=0时第一个字符开始后面的第一个值 然后通过与ascii匹配
这里的119在ascci表中为w 这里的判断方法和步骤一是一样的
然后再把1,1改成,2,1,含义就是求库名的第二个字母, 以此类推得到库名为words
步骤3:
接下来就是求表长度和表名称了,方法都是一样的,下面我给出语句
爆表长度 id=0 or (select length(table_name) from information_schema.tables where table_schema like database() limit 0,1)>3 %23
limit 0,1的含义是求第一个字符 limit 1,1的含义是求第二个字符 具体情况请百度谢谢别问我23333
爆表名称 ?id=0 or (ascii(substr((select table_name from information_schema.tables where table_schema like database() limit 0,1),1,1))) > 50 –+
注意这里的substr和limit括号 慢慢体会,反正这个是对的
步骤3:
接下来就是查字段了,可能就麻烦了,所以上神器 Python!
给出爆字段的脚本如下
运行得到flag
【总结】
感谢some words,让我在sql注入方面能力得到了提升。不废话了0.0,欢迎各位大佬慢慢看