具体可以看 CTF PHP反序列化,下图摘自此篇文章 其实每个字符对应的含义都很好理解: s ---- string 字符串 i ---- integer 整数 d --- 双精度型 b ---- boolean 布尔数 N ---- NULL 空值 O ---- Object 对象 a ---- array 数组············· 其中较为重要
object(Ctf)#2 (3) { ["flag"]=> string(7) "no flag" ["name"]=> string(7) "Sch0lar" ["age"]=> string(2) "18" } PHP反序列化漏洞原理:未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果。在...
show_source(__FILE__); 首先,分析PHP代码: Openssl_random_pseudo_bytes()函数的作用是生成指定字节长度的随机数;Eval()函数的作用是把字符串当做PHP语句执行。那么,这段代码中,通过GET请求得到Func_name参数,执行同名函数,我们知道SUCTF_$hash()函数中通过MY变量cat了flag的值。那么如果能知道$hash的值,就能指...
(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...
如果hash值以0e开头,后面都是数字,再与数字比较时就会被解释为010^n(科学计数法)还是0就会被判断为相等,从而绕过登陆环节。 var_dump(md5(''250610708')==md5('QNKCDZO')) #输出为bool类型true var_dump('0e12345'=='0e5767')#输出为bool类型true ...
在CTF题目中,好几次都遇到了利用 PHP 原生类进行XSS、反序列化、SSRF、XXE以及读文件的思路,遇到一个就卡住一个……一直想好好看一下 PHP 原生类在 CTF 中的利用,迫于生活xx拖了好久。今天终于有机会好好总结总结了。我们可以使用以下方法遍历一下PHP的内置类: ...
做CTF题时经常会遇到各种php弱类型和一些函数的绕过方法,由于知识比较零碎,就总结一下我所遇到的,也方便自己以后观看。 0x00:Hash比较缺陷 PHP在处理哈希字符串时,通过!=或==来对哈希值进行比较,它把每一个以0e开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以0e开头的,那么PHP将会...
$_POST // 获取 post 数据,是一个字典 $_GET // 获取 get 数据,是一个字典 $_COOKIE // 获取 cookie $_SESSION // 获取 session $_FILE // 获取上传的文件 $_REQUEST // 获取 $_GET,$_POST,$_COOKIE 中的数据 错误控制运算符 PHP 支持一个错误控制运算符:@。当将其放置在一个PHP 表达式之前...
CTF之PHP黑魔法总结 php黑魔法,是以前做CTF时遇到并记录的,很适合在做CTF代码审计的时候翻翻看看。 一、要求变量原值不同但md5或sha1相同的情况下 1.0e开头的全部相等(==判断) 240610708 和 QNKCDZO md5值类型相似,但并不相同,在”==”相等操作符的运算下,结果返回了true....
mysql)=="Failed") die("Upload failed"); $new_filename="./upload/".$filehash.".txt"; move_uploaded_file($_FILES['file']['tmp_name'], $new_filename) or die("Upload failed"); die("Your file ".w_addslashes($_FILES['file']['name'])." upload successful."); }else{ $hash...