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
这道题的主要目的就是学习正则
可以先对正则表达式进行拆分
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@
前女友
<?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
你从哪里来
猜测是看ua头的,后来发现是看referer的