hint.php文件中使用了魔术方法__tostring()方法,当一个对象被当作一个字符串被调用时即可触发,方法的主要作用是读取并打印传进来的$file,估计是通过反序列化漏洞来读取flag.php的内容。追踪以下调用链,在index.php文件中发现使用echo将反序列化的对象当作字符串打印,此处就会触发__tostring()
filemtime(); fileatime(); filectime(); filesize(); exif_thumbnailexif_imagetype(); imageloadfontimagecreatefrom(); hash_hmac_filehash_filehash_update_filemd5_filesha1_file(); get_meta_tagsget_headers(); getimagesizegetimagesizefromstring(); $zip = new ZipArchive(); $res = $zip->open...
如果要找出 0e 开头的 hash 碰撞,可以用如下代码 <?php $salt = 'vunp'; $hash = '0e612198634316944013585621061115'; for ($i=1; $i<100000000000; $i++) { if (md5($salt . $i) == $hash) { echo $i; break; } } echo 'done'; switch 如果switch 是数字类型的 case 的判断时, switch...
(1)hash_file() (2)hash_update_file() 2.MySQL mysqlnd_local_infile_init TEXT 此处输入图片的描述 3.file 这里只是对 file 的补充 (1)readfile() (2)touch (3)get_meta_tags() (4)file() 4.PDO::postgresql PDO::pgsqlCopyFromFile(string $table_name , string $filename [, string $delimit...
show_source(__FILE__); 首先,分析PHP代码: Openssl_random_pseudo_bytes()函数的作用是生成指定字节长度的随机数;Eval()函数的作用是把字符串当做PHP语句执行。那么,这段代码中,通过GET请求得到Func_name参数,执行同名函数,我们知道SUCTF_$hash()函数中通过MY变量cat了flag的值。那么如果能知道$hash的值,就能指...
做CTF题时经常会遇到各种php弱类型和一些函数的绕过方法,由于知识比较零碎,就总结一下我所遇到的,也方便自己以后观看。 0x00:Hash比较缺陷 PHP在处理哈希字符串时,通过!=或==来对哈希值进行比较,它把每一个以0e开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以0e开头的,那么PHP将会...
在CTF题目中,好几次都遇到了利用 PHP 原生类进行XSS、反序列化、SSRF、XXE以及读文件的思路,遇到一个就卡住一个……一直想好好看一下 PHP 原生类在 CTF 中的利用,迫于生活xx拖了好久。今天终于有机会好好总结总结了。我们可以使用以下方法遍历一下PHP的内置类: ...
php黑魔法,是以前做CTF时遇到并记录的,很适合在做CTF代码审计的时候翻翻看看。 一、要求变量原值不同但md5或sha1相同的情况下 1.0e开头的全部相等(==判断) 240610708 和 QNKCDZO md5值类型相似,但并不相同,在”==”相等操作符的运算下,结果返回了true. ...
sql_result("select filehash from file where filename='".w_addslashes($_FILES['file']['name'])."'",$mysql) or die("Upload failed"); $new_filename="./upload/".$hash[0][0].".txt"; move_uploaded_file($_FILES['file']['tmp_name'], $new_filename) or die("Upload failed");...
如果hash值以0e开头,后面都是数字,再与数字比较时就会被解释为010^n(科学计数法)还是0就会被判断为相等,从而绕过登陆环节。 var_dump(md5(''250610708')==md5('QNKCDZO')) #输出为bool类型true var_dump('0e12345'=='0e5767')#输出为bool类型true ...