Bugku_web第二页(2)

sodirty

扫描路径,下载www.zip进行审计

这道题是node js 原型链污染,算是初识,首先得认识node js

先码住:https://www.jianshu.com/p/2dbb1b38de1e

字符?正则?

源码

<?php 
highlight_file('2.php');
$key='flag{********************************}';
$IM= preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IM ){ 
  die('key is: '.$key);
}
?>

想拿到flag,就要让正则匹配为真

trim() 函数移除字符串两侧的空白字符或其他预定义字符。

$matches: 如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推。

正则:/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i

这道题的主要目的就是学习正则

Bugku_web第二页(2)

Bugku_web第二页(2)

可以先对正则表达式进行拆分

key

.*

key

.{4,7}

key:

\/

.

\/

(.*key)

[a-z]

[[:punct:]]

key就是普通的字符
.是除了换行的任意字符,假设就是a *匹配0或多个正则表达式,假设有2个
key又是一个普通字符
.{4,7}就是匹配4-7个任意字符(包括4,不包括7),假设有5个a
key普通字符
:又是普通字符
\反斜杠进行转义,此处取/的原意
.任意字符,假设取a
/同上,取/原意
()改变逻辑顺序,此处不影响,按.*key顺序正则匹配
假设两个a和key
[a-z]取a-z中任意一个字符,假设取a
[:punct:]就是特殊字符的意思,[[:punct:]]就是在特殊字符里取一个,假设是;(当然也可以是@#等等)


keyakeyaaaaakey:/a/keya@

Bugku_web第二页(2)

前女友

<?php
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){
    $v1 = $_GET['v1'];
    $v2 = $_GET['v2'];
    $v3 = $_GET['v3'];
    if($v1 != $v2 && md5($v1) == md5($v2)){
        if(!strcmp($v3, $flag)){
            echo $flag;
        }
    }
}
?>

1.md5比较

2.strcmp比较,数组绕过

 strcmp(array(), "abc") = null

payload:

/?v1=IHKFRNS&v2=QLTHNDT&v3[]=

login1

题目提示:SQL约束攻击

借此机会学习一下。

一看便懂的原理:https://www.jianshu.com/p/076a521587bc

你从哪里来

Bugku_web第二页(2)

猜测是看ua头的,后来发现是看referer的

Bugku_web第二页(2)

 

上一篇:Java使用正则表达式


下一篇:iOS上架问题