07 2022 档案
摘要:php使用的PCRE库使用NFA作为正则引擎 NFA:从起始状态开始,一个一个字符地读取输入串,并与正则表达式进行匹配,如果匹配不上,则进行回溯,尝试其他状态 <?php $data=$_REQUEST['data']; if(preg_match('/<\?.*[(`;?>].*/is', $da
阅读全文
摘要:进去一个代码审计 <?php $files = scandir('./'); foreach($files as $file) { if(is_file($file)){ if ($file !== "index.php") { unlink($file); } } } include_once("
阅读全文
摘要:抓包发现传参json格式的数据,可以尝试xxe 先把content-type改为application/xml,再把json格式的数据改为xml格式的数据 最终poc: <?xml version="1.0"?> <!DOCTYPE message[ <!ENTITY % local_dtd SYS
阅读全文
摘要:一般限制已经登录的用户再重新登录,都会在login.php页面session_start(),判断session数组中特定的值是否存在,如果存在,就header(Location:)进行跳转,但这个login.php页面不同。 他是在login.php页面在前端用<script src="./js/
阅读全文
摘要:考点: 伪造php session(session有好几种生成机制) 知识: php的默认的存session的文件名是sess_+PHPSESSIONID的值(PHPSESSION的值就是session文件经过sha256计算后的字符串),
阅读全文
摘要:这道题的重点:这道题完美地运用了base64_decode()函数会忽略某些特殊字符的特点 来看一个实例代码: <?php $a1=array(); $a2=array("php://filter/write=convert.base64-decode/resource="); $text=json
阅读全文
摘要:strp_tags()函数的作用是剥去字符串中的 HTML、XML 以及 PHP 的标签。 代码实例: <?php echo strip_tags("<?php phpinfo();?>Hello world!"); ?> 代码运行结果: Hello world! 重要的是php://filter支
阅读全文
摘要:/usr/local/tomcat/webapps/file_in_java/WEB-INF/web.xml 读取这个WEB-INF/web.xml文件(配置文件),可以确定相对class文件夹的位置在哪里,例如读出来一个/cn/abc/servlet/ListFileServlet,那么对应的cl
阅读全文
摘要:SVG是一种用XML定义的语言,SVG图形是可交互的和动态的,可以在SVG文件中嵌入动画元素或通过脚本来定义动画。 也就是说这里的SVG是个XML,并且存在可控的内容,那么自然就会想到XXE。 本地新建一个a.svg,内容为: <?xml version="1.0" encoding="UTF-8"
阅读全文
摘要:知识点: <?= ?>可以代替<?php ?>,不仅仅有输出的功能,可以完全代替<?php ?> 进去一个代码审计: <?php error_reporting(0); class SYCLOVER { public $syc; public $lover; public function __wa
阅读全文
摘要:如果是==的话, md5传个0e开头的,会以为科学计数法,底数是0,值永远是0 sha1传个数组
阅读全文
摘要:上传文件的检测代码: if($contents=file_get_contents($_FILES["file"]["tmp_name"])){ $data=substr($contents,5); foreach ($black_char as $b) { if (stripos($data, $
阅读全文
摘要:进去一个代码审计: x.x.x.x <?php if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $http_x_headers = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REM
阅读全文
摘要:知识点: 1.pathinfi()函数会返回一个数组,关于文件路径的信息 返回的数组元素如下: [dirname]: 目录路径 [basename]: 文件名 [extension]: 文件后缀名 [filename]: 不包含后缀的文件名 代码例子: <?phpprint_r(pathinfo("
阅读全文
摘要:首先先通过代码逻辑读取index.php的源码,然后根据include的代码和代码逻辑提供的几个页面,读取了几个文件的代码 class.php: <?php class C1e4r { public $test; public $str; public function __construct($n
阅读全文
摘要:<?php highlight_file(__FILE__); error_reporting(0); $file = "1nD3x.php"; $shana = $_GET['shana']; $passwd = $_GET['passwd']; $arg = ''; $code = ''; ec
阅读全文
摘要:先用dirsearch扫描,发现有git泄露,然后用GitHack扫描,得到不全的代码,使用git log --all,找到最老版本,然后git reset 版本号,代码就补全了。 源码如下: <?php include "mysql.php"; session_start(); if($_SESS
阅读全文
摘要:进去一个代码审计: <?php error_reporting(0); highlight_file(__FILE__); function check($input){ if(preg_match("/'| |_|php|;|~|\\^|\\+|eval|{|}/i",$input)){ // i
阅读全文
摘要:<?php $payload = ''; $a='_GET'; for($i=0;$i<strlen($a);$i++) { for($j=0;$j<255;$j++) { $k = chr($j)^chr(255); //dechex(255) = ff if($k == $a[$i]) $pay
阅读全文
摘要:进去一个源码: <?php function get_the_flag(){ // webadmin will remove your upload file every 20 min!!!! $userdir = "upload/tmp_".md5($_SERVER['REMOTE_ADDR'])
阅读全文
摘要:源码: $flag = "#flag in /flag"; $comm1 = '"' . $comm1 . '"'; $comm2 = '"' . $comm2 . '"'; $cmd = "file $comm1 $comm2"; system($cmd); ?> payload:?comm1=i
阅读全文
摘要:报错405换请求方法 shal()函数用数组绕过 post传参: roam1[]=1&roam2[]=2 shal()函数的结果是一样的
阅读全文
摘要:打开就是一个代码审计: <?php error_reporting(0); if(isset($_GET['code'])){ $code=$_GET['code']; if(strlen($code)>40){ die("This is too Long."); } if(preg_match("
阅读全文
摘要:捞到代码,在本地搭建,源码(rce.php): <?php error_reporting(0); if(isset($_GET['code'])){ $code=$_GET['code']; if(strlen($code)>40){ die("This is too Long."); } if(
阅读全文
摘要:使用php://filter/string.strip_tags导致php崩溃清空堆栈重启,如果在同时上传了一个文件,那么这个tmp file就会一直留在tmp目录,再进行文件名爆破就可以getshell php://filter/string.strip_tags使用条件: •php7.0.0-7
阅读全文
摘要:smarty模板注入是在请求报文里X-Forwarded-For处进行操作的 X-Forwarded-For: {{system("ls /")}} X-Forwarded-For: {{system("cat ../../../../../../../flag")}}
阅读全文
摘要:首先,这是一个二次注入,先insert into 到文章表,填字段的时候想着查询语句的结构,填写恶意语句。 输入过滤了or、注释符 or被过滤了,影响很大,第一不能order by 了,得union select慢慢试,最要紧的是information_schema不能用了,这个内置库不能用的话,就
阅读全文
摘要:建议前期实行web三件套的时候就开着代理。 看到bot,想到robots.txt,得到: User-agent: * Disallow: /fAke_f1agggg.php 抓包访问,返回包中有一个Look_at_me: /fl4g.php 访问,得到源码: <?php header('Conten
阅读全文
摘要:主页有个get型的url传参,?url=../../../../../proc/self/cmdline 回显是python3 app.py 然后通过?url=../../../../../proc/self/cwd/app.py看当前的app.py的源码 审计源码: from flask impo
阅读全文
摘要:1.phar文件结构 1.A stub 可以理解为一个标志,格式为xxx<?php xxx; __HALT_COMPILER();?>,前面内容不限,但必须以__HALT_COMPILER();?>来结尾,否则phar扩展将无法识别这个文件为phar文件,比如Stub部分可以是:GIF89a<?ph
阅读全文
摘要:kali中php_mt_seed-4.0的用法: 先cd到php_mt_seed-4.0文件夹,然后输入命令: ./php_mt_seed 3 3 0 61 60 60 0 61 4 4 0 61 40 40 0 61 28 28 0 61 59 59 0 61 58 58 0 61 4 4 0 6
阅读全文
摘要:知识点1: preg_match()只匹配单行数据,利用%0a绕过,看一个例子: <?php $a=urldecode('%0aflag'); if(preg_match('/^.*(flag).*$/',$a)){ echo '匹配到了'; } else echo "没匹配到"; ?> 运行会输出
阅读全文
摘要:审计源码; <?php include 'config.php'; // FLAG is defined in config.php if (preg_match('/config\.php\/*$/i', $_SERVER['PHP_SELF'])) { exit("I don't know wh
阅读全文
摘要:之前做过一道Fake XML cookbook,那道题DTD部分直接就可以SYSTEM "file:///flag" 这道题不能直接通过file协议得到flag,应该是flag文件不在本台机器上,在内网的其他机器上,SYSTEM "file:///ect/hosts" 和SYSTEM "file:/
阅读全文
摘要:第一个套: $query = $_SERVER['QUERY_STRING']; if( substr_count($query, '_') !== 0 || substr_count($query, '%5f') != 0 ){ die('Y0u are So cutE!'); } if($_GE
阅读全文

浙公网安备 33010602011771号