php2

bugku

矛盾

flag{bugku-789-ps-ssdf}

看代码,要求输入一个不是数字、数字字符串,同时还==1 的东西。

ppt 里“字符串到数字”有说数字+字符串等于那个数字,所以输入类似 1admin 的字符串就可以了。

cgctf

md5 collision

nctf{md5_collision_is_easy}

这个 ppt 里有一模一样的:md5('240610708') == md5('QNKCDZO'),所以输入?a=240610708就可以得到 flag。

php decode >nctf{gzip_base64_hhhhhh}

base64_decode()不用多说,是解码;gzinflate查了下也是解码——那整个 CLsI 函数不就是解码么?把整个复制下来写进.php,最后改成

$a = eval(xxx);
var_dump($a);

按理来说就可以了,但每回一访问就说“该网页无法正常运作 localhost 目前无法处理此请求。 HTTP ERROR 500”。

气死,命令行里一行一行输,就出结果了。

unv:$ php -a
Interactive mode enabled

php > $ZzvSWE = "+7DnQGFmYVZ+eoGmlg0fd3puUoZ1fkppek1GdVZhQnJSSZq5aUImGNQBAA==";
php > $ZzvSWE = gzinflate(base64_decode($ZzvSWE));
php > for ($i = 0; $i < strlen($ZzvSWE); $i++) {
php { $ZzvSWE[$i] = chr(ord($ZzvSWE[$i]) - 1);
php { }
php > var_dump($ZzvSWE);
string(44) "phpinfo();
flag:nctf{gzip_base64_hhhhhh}"

COOKIE

nctf{cookie_is_different_from_session}

网页叫我登录,但没看到登录框,f12 也一片空白。既然题目叫 COOKIE,就看了眼 COOKIE,发现 login 的 value 是 0。

好像没法直接改,就用 burp 抓包,和刚讲 burp 时那道 admin 一样,改成 1 就好了。

shiyanbar

你真的会 php 吗?

FLAG{2dd8711082fe24c19ae8}

看 header,还有 hint,是个 txt,所以改网址为该 txt 看到 php 源代码。

$_POST['number']已设置且不为空,不能是数字,转成 int 再转成 str 还得和本身相等。紧接着及得是回文数还不能是回文数,自己试了几个都被卡住了,就上网查 wp 了。

新火狐的 hackbar 有问题,POST 人家的 payload 都过不了,写脚本也不行。董斌让我用在线的,成了。换了一个在线网站,又不行了……

总之 wp 的思路是用 intval 溢出+%00 截断,post number=2147483647%00。因为%00 的缘故,is_numeric 会返回 false。strrev 后 2147483647 变为 7463847412,它大于 32 位系统 int 最大值所以还是 2147483647(难道不应该变负的么),绕过第一个“是回文数”的检验。显而易见,第二个回文数检验也是可以通过的。



如无特殊声明,本页内容采用 CC BY-NC 4.0 授权