sqlmap没跑出来的手测

数据包原本是没有referer的,添加此字段测试后直接报错了

然后再测试究竟是不是单引号闭合,在尝试完'),","),'',')'等一系列后发现是双写单引号绕过

然后尝试简单的报错注入发现并没有显示数据库消息,只显示错误和正确的的注入代码段,于是尝试布尔盲注。dual 表是 MySQL 中的一个虚拟表,主要用于满足 SQL 语法要求。它常用于计算表达式、调用函数或测试 SQL 语法。在 MySQL 中,FROM dual 是可选的,可以直接省略。

test'||(SELECT 0x4d4b6d4b FROM DUAL WHERE 9779=9779 AND 9549=9549)||'

此select语句满足后面的and段是正确的,那么就会显示正常页面,如果是错误的,就会报错:you error什么的

于是测试数据库长度为多少,长度设置为12的时候正常显示,13就报错了

test'||(SELECT 0x4d4b6d4b FROM DUAL WHERE (length(database())=12) AND 9549=9549)||'

然后知道长度就对每个字符测试具体是什么ascii码

test'||(SELECT 0x4d4b6d4b FROM DUAL WHERE ascii(substr(database(),1,1))>{{int(97-122)}} AND 9549=9549)||'

跑出来的结果是s对应115,后面改变字段得到最终数据库,具体内容不做演示