ctfshow 摆烂杯web wp

考试前不想复(预)习,正好是ctfshow的摆烂杯,就去做了几道web题

文章目录

    • web签到
    • 黑客网站
    • 一行代码

web签到

题目要输入三个整数A、B、C,ABC均不可为0,让A³+B³+C³=114,刚开始还想着爆破,后面感觉到太慢了,开始随便输,发现输入1+1后会把他当成2来计算,那就很好办了,直接让输入数的幂为1/3即可

A=5&B=-1&C=-10**(1/3)

后面看群才知道。。
ctfshow 摆烂杯web wp_第1张图片
幸亏没爆破

黑客网站

f12后发现一堆字符串,题目也说了不用渗透和扫描,说明关键点就是这些字符串,这些字符串都是以onion结尾的,想到今年的极客大挑战,有一题也是给了个onion结尾的网址,于是把前面的空格全部删掉

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxion

然后用某葱浏览器访问就能得到flag

一行代码


echo 
!(!(include "flag.php")
||(!error_reporting(0))
||stripos($_GET['filename'],'.')
||($_GET['id']!=0)
||(strlen($_GET['content'])<=7)
||(!eregi("ctfsho".substr($_GET['content'],0,1),"ctfshow"))
||substr($_GET['content'],0,1)=='w'
||(file_get_contents($_GET['filename'],'r') !== "welcome2ctfshow"))?$flag:str_repeat(highlight_file(__FILE__), 0);

好家伙,这是人能想出来的代码?
先看他的逻辑,三目运算符要求前面那一长串为true,才能输出flag,又因为第三行开头的!,则中间所有的条件都要为false,又因为是或运算,那么每个条件都为false。
第一、二个条件是一定成立的;
第三个要$filename中没有.
第四个是$id=0
第五个是$content长度大于7;
第六个是让ctfsho$content的第一个字符拼接后值为ctfshow
但是第七个条件却不让$content的第一个字符为w,百度可以看到eregi()函数大小写不敏感,这里可以用W来绕过;
第八个条件要求$filename的值要等于welcome2ctfshow

payload:

GET:
?id=0&content=W1111111&filename=php://input

POST:
welcome2ctfshow

你可能感兴趣的:(CTF,前端,php,开发语言)