1.矛盾
这里写代码片
z>?php
num=
n
u
m
=
_GET[‘num’];
if(!is_numeric(num))
{
echo
num)) { echo
num;
if($num==1)
echo ‘flag{****}’;
}
这题思路很简单就是即要符合不是数字和数字字符串并且要让第二个if判断成立。参照0x01中的1,2点,只需要让num的字符串首字母为1,然后后面的字符串不构成数字字符,就可以成功绕过。
is_numeric 函数
返回 Boolean 值指明表达式的值是否为数字。
is_numeric(expression),expression 参数可以是任意表达式。
说明:如果整个 expression 被识别为数字,IsNumeric 函数返回 True;否则函数返回 False。如果 expression 是日期表达式,IsNumeric 函数返回 False。
2./X00 数组了解
view-source:
if (isset (_GET[‘nctf’])) {
if (@ereg (“^[1-9]+$", $_GET[‘nctf’]) === FALSE)
echo ‘必须输入数字才行’;
else if (strpos ($_GET[‘nctf’], ‘#biubiubiu’) !== FALSE)
die(‘Flag: ‘.$flag);
else
echo ‘骚年,继续努力吧啊~’;
}
代码审计,满足条件
_GET[‘nctf’])) { if (@ereg (“^[1-9]+$", $_GET[‘nctf’]) === FALSE) echo ‘必须输入数字才行’; else if (strpos ($_GET[‘nctf’], ‘#biubiubiu’) !== FALSE) die(‘Flag: ‘.$flag); else echo ‘骚年,继续努力吧啊~’; } 代码审计,满足条件
_GET['nctf']全为数字,并且$_GET[‘nctf’]含有’#biubiubiu’字符串,对于ereg()这个函数存在NULL截断漏洞,所以构造payload:nctf=11%00%23biubiubiu
将#进行urlencode,URL编码遵循下列规则: 每对name/value由&;符分开;每对来自表单的name/value由=符分开。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。
(详细编码表:https://baike.baidu.com/item/URL%E7%BC%96%E7%A0%81/3703727?fr=aladdin)
3.html的初步认识
(1)html指的是超文本标记语言;
(2)html不是一种编程语言,而是一种标记语言,不需要编译,直接由浏览器执行;
(3)html使用标记标签来描述网页;
(4)html文档也叫做web页面;
(5)html文件必须使用htm和html为文件的后缀名;
(6)html是大小写不敏感的,HTML与html是一样的。
4.html和css的关系
(1)HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片、视频等。
(2)CSS样式是表现(外观控制)。就像网页的外衣。比如,标题字体、颜色变化,或为标题加入背景图片、边框等。所有这些用来改变内容外观的东西称之为表现。
7.19 两道ctf练习题与html的初步了解
最新推荐文章于 2023-03-17 14:00:21 发布