一道web题
六月 04, 2022
一、一行代码
首先审题:
1 | echo !(!(include "flag.php") |
这个整体是三目运算符,所以需要前面的表达式为真才能返回$flag,但在开头有一个!,所以要使里面的表达式为false,但又都是 | | 连接的,所以要使表达式全为false,逐个观察。
三目运算符:
语法:retvalue = expression ? retvalue1 : retvalue2;
说明:如果表达式 expression 的值为真,那么就返回 retvalue1,否则,就返回 retvalue2。
stripos($_GET[‘filename’],’.’):filename中不能存在小数点;
($_GET[‘id’]!=0):id=0;
(strlen($_GET[‘content’])<=7):content的长度大于7;
(!eregi(“ctfsho”.substr($_GET[‘content’],0,1),”ctfshow”)):没匹配为真,则匹配为假;content=ww
substr($_GET[‘content’],0,1)==’w’:content为W
(file_get_contents($_GET[‘filename’],’r’) !== “welcome2ctfshow”)):用data伪协议绕过;
在网址输入:?id=0&content=W1111111&filename=data://text/plain,welcome2ctfshow
先记录一下,以后阶段性补充,不懂的知识很多,目前只是知其然而不知所以然.
查看评论