4.SQL注入
一、SQL注入:
1.常用命令:
2.SQLMAP使用:
(1)前置了解:
官方网址:http://sqlmap.org
Github网址:https://github.com/sqlmapproject/sqlmap
https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-zh-CN.md
使用手册:https://github.com/sqlmapproject/sqlmap/wiki/Usage
(2)常用类型:
▲基于布尔的盲注:GET型
攻击流程:
①测试目标是否存在sql注入:sqlmap -u ip
这里就可能会返回payload,可以用来自定义使用
②之后查找所有database:sqlmap -u ip –dbs
③查找所有tables:sqlmap -u ip –tables
④查找存储的属性字段:sqlmap -u ip -D database_name -T table_name –columns
⑤依据属性字段查找想要的数据:sqlmap -u ip -D database_name -T table_name -C column_1,column_2… –dump
(例如table中可能就保存id,username,password的属性,就可以查找账号密码出来)
▲针对登录框的SQL注入:POST型
①利用burpsuite抓请求登录的包,查看(需要先设置代理,然后拦截,8080可能不行,得其它端口代理)
username=admin&password=admin&authorization=
最下面的这个基本就是我们传输的请求登录信息。
②然后将这些内容保存下来,生成一个文件sql.txt,将这个文件用sqlmap运行分析:
sqlmap -r sql.txt
这样就开始从sql.txt文件中分析了,判断到底有没有sql注入漏洞,有的话就应该有对应的payload生成出来。
▲之后就类似上面的,获取数据库,table等等信息,从而最终获取服务器的登录账号和密码。
▲其它类型的测试:测试共5级
测试注入时加上参数–level=LEVEL
①默认:GET和POST测试
②2级:测试cookie:
(看服务器会不会根据cookie来获取用户数据)
sqlmap -r sql.txt –level=2
②3级:测试HTTP User-Agent/Referer头的值
3.SQL-Shell:
(1)通过漏洞进入SQL-Shell:
sqlmap -r sql.txt –level=5 –sql-shell
这样如果能进入就可以直接用SQL语句来查询数据
(2)通过漏洞进入OS-shell:
sqlmap -r sql.txt –level=5 –os-shell
①之后需要选择Web站点的搭建语言,通过插件或者其它形式判断(php,jsp等等)
②然后需要输入一个可以往里面写东西的文件目录:例如/var/www/upload
这里目录可以通过工具来查找:
1 | #注释头 |
这样sqlmap就可以上传东西,写入一些类似于web-shell等东西,从而获取权限。
③那么就进入os-shell了,可以获取到服务器权限