Background
打了自己第一次线下的awdp,打完和师傅们交流发现很多tips可以用,在这里随便记录下
attack
随便说下这次红帽杯的一些attack的思路
这次总的来说web题目是有点离谱的 1道nday 1道考点比较偏的内部类rce 1道go语言的题目
首先说记得下漏洞文库,多下几个 考试看见什么cms就直接搜就完事了,现在的题目越来越爱直接拿着现成的题目来出题,我当时没想着搜。。就直接硬看了,本来tp框架就不熟,还在赛场上挖真的挺难的。
存一份php手册,数组动态这个点大家基本都没搞出来,内置类的考点质量还挺高的,但是因为不通外网很多函数都不熟悉
go语言这道题就蛮坑的,没找到考点在哪里,只看到几个fix成功的,我注意到有一个快结束成功打了,但不知道是谁。
fix
根据这次的fix,发现一个蛮怪的事 这些题的check.py基本都是都拿payload打一下flag,当你把flag ban了就达到个通防的效果
即使check.py做了些比较简单的效果比如echo了个1这种的 只要ban了system关键字就直接算fix成功了,其实挺无语的
我这里给两个比较通防的的防御
if (preg_match('/system|tail|flag|exec|base64/i', $_SERVER['REQUEST_URI'])) {
die('no!');
}
$str ="";
foreach ($_POST as $key => $value) {
$str.=$key;
$str.=$value;
}
if (preg_match("/system|tail|flag|exec|base64/i", $str)) {
die('no!');
}
update.sh
cp 要替换的文件 /var/www/html/待替换的文件
go语言的fix方法
修改源码之后update.sh里面的内容有点讲究
update.sh
cp ./修改后编译好的文件 /编译文件的目录
ps -ef |grep go编译的名字| awk '{print $2}' | xargs kill -9
cd /编译文件目录 &&./执行编译文件 > /dev/null 2>&1
后记
被吊打 自己还是菜 还是多学几门开发语言多了解特性多写代码