序
这儿有必要得说一下==和===这俩货的重要性。==是比较运算,它不会去查看条件式的表达式的类型===是恒等,它会查看查表达式的值与类型是否持平NULL,0,”0″,array()运用==和false比较时,都是会回来true的,而运用===却不会这个根底知识点咱们应该都知道,所以提一下,下面就不会再拿出来说了。
数组
0x01许多时分,PHP数组都发挥了至关重要的效果,先来看下BOSTEN KEYPARTY中的一道题:
Default
if (isset($_GET['password'])) {
if ($_GET['password'])
print 'Your password can not be your name.';
else if (sha1($_GET['password']))
die('Flag: '.$flag);
else
print 'Invalid password';
}
这道题,咱们首先要保证name和password的值不能相同,其次,sha1加密之后的name和password的值又有必要完全相同 咱们知道,这时的a[0] = 1;所以name[] = 1和password[]= 2相比较,能够越过之一个判别,而假如运用sha1对一个数组进行加密,回来的将是NULL,NULL===NULL,这是建立的,所以结构两个数组,成功拿到flag
0x02再看bosten keyparty上的别的一道题:
Default
if (isset($_GET['password'], flag);
else
print 'Invalid password';
}
这儿,运用strcmp去比较password和flag,假如==0的话,就给出flag,可是strcmp比较,假如持平才会回来0,假如不持平的话,要么大于0,要么小于0,可是strcmp只会处理字符串参数,假如给个数组的话呢,就会回来NULL,而判别运用的是==,NULL==0是bool(true)的,所以,这道题仍是自始自终结构一个数组进去
0x03bosten keyparty上的又又一道题:
Default
if (isset ($_GET['password'])) {
if (ereg ("^[a-zA-Z0-9]+$_GET['password']) === FALSE)
echo 'You password must be alphanumeric';
else if (strpos ($_GET['password'], '--') !== FALSE)
die('Flag: ' . $flag);
else
echo 'Invalid password';
}
这道题有两种做法,咱们仍是先说数组 ereg是处理字符串的,所以,依照原理,咱们将password结构一个arr[],传入之后,ereg是回来NULL的,===判别NULL和FALSE,是不持平的,所以能够进入第二个判别,而strpos处理数组,也是回来NULL,留意这儿的是!==,NULL!==FALSE,条件建立,拿到flag, 第二种做法,ereg读到%00的时分,就截止了,所以能够结构s%00–,也能拿到flag(这也算是一个黑魔法吗?哈哈)
数字的比较
0x01wechall上的一道题:
Default
function noother_says_correct(one = ord('1');
$nine = ord('9');
// Check all the input characters!
for (i < strlen(i++)
{
// Disallow all the digits!
number{digit >= digit <= $nine) )
{
// Aha, digit not allowed!
return false;
}
}
return $number == "3735929054";
}
这儿,它不让输入1到9的数字,可是后边却让比较一串数字,往常的办法必定就不能行事了,咱们都知道计算机中的进制转化,当然也是能够拿来比较的,0x最初则表明16进制,将这串数字转化成16进制之后发现,是deadc0de,在最初加上0x,代表这个是16进制的数字,然后再和十进制的3735929054比较,答案当然是相同的,回来true拿到flag
0x02看安全宝约宝妹的一道题:
Default
_SERVER['REQUEST_METHOD'])
{
_POST['password'];
if (0 >= preg_match('/^[[:graph:]]{12,}password))
{
echo 'Wrong Format';
exit;
}
while (TRUE)
{
$reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/';
if (6 > preg_match_all(password, c = 0;
$ps = array('punct', 'digit', 'upper', 'lower');
foreach (pt)
{
[1] [2] 黑客接单网
在一次偶尔的时机发现公司某个网站存在thinkphp的长途指令履行缝隙,自此对这个缝隙爱不释手。这究竟是为什么呢?首要原因有2点:榜首,假如网站存在这个缝隙,咱们可以去履行各式各样的体系指令来进行测验...
本次测验nginx+php与apache+php哪种组合的核算性能及稳定性更佳 操作系统:Centos6.4 x64 硬件环境: 服务器IP 硬件装备 人物 192.168.1.2 4中心 8G...
今日咱们来接着上一篇,讲讲WAF绕过技能的其他几个方面。 Unicode标准化 让Unicode标准化是Unicode的一个功用,用于比较看起来类似的Unicode符号。例如,符号“ª”和“ᵃ”有不同...
在一次缝隙赏金活动中,挖到个指令注入的洞,我先以时延作为证明向厂商提交该缝隙,厂商以国内网络环境差为由(确实得翻墙)拒收,几回交流,奉告若我能取回指定文件 secret.txt 才认可。方针是个受限环...
输出这篇文章的意图也是为了很多人在挖洞时,看到其他大佬钱拿的不要不要的时分,只能在咱们自己自己电脑面前束手无策,这篇文章也是为了带咱们翻开新的思路。 俗话说得好,“不是你套路不行深,是你的根底不行厚...
一、前语 在MySQL 5.7.5之前的所有主版别存在一个BUG,该或许导致影响POC/EXP需求从头编写或批改的问题。 BUG信息链接: https://bugs.mysql.com/bug.ph...