考试前不想复(预)习,正好是ctfshow的摆烂杯,就去做了几道web题
web签到
题目要输入三个整数A、B、C,ABC均不可为0,让A³+B³+C³=114,刚开始还想着爆破,后面感觉到太慢了,开始随便输,发现输入1+1
后会把他当成2来计算,那就很好办了,直接让输入数的幂为1/3
即可
A=5&B=-1&C=-10**(1/3)
后面看群才知道。。
幸亏没爆破
黑客网站
f12后发现一堆字符串,题目也说了不用渗透和扫描,说明关键点就是这些字符串,这些字符串都是以onion结尾的,想到今年的极客大挑战,有一题也是给了个onion结尾的网址,于是把前面的空格全部删掉
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxion
然后用某葱浏览器访问就能得到flag
一行代码
<?php
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