1.
下载后是一个java编写的游戏
题目说是要坚持60秒后就有flag用java的反编译工具jd-gui.exe 查看源代码,找到PlaneGameFrame这个函数,里边是坚持秒数输出的信息
可以找到flag,但是里边是base64加密的,解码得到flag{DajiDali_JinwanChiji}
2.
这个题和之前一样破解WiFi密码,在kali中使用
crunch 11 11 0123456789 -t 1391040@@@@ -o ~/pas.txt
生成专用的密码字典,再使用WiFi破解工具进行爆破
aircrack-ng xxx.cap -w xxx.txt
得出密码
3.
还是跟之前一样把文件拖入kali中 用vi打开后往下找可以找到key
4.
现在拿到一个图片先看它的属性里边的详情
发现一段base64 解码,估计是一个密码,然后winhex打开发现里边还包含有zip文件,进行分离,得到一个压缩包,里边有一个图片,但是是加密的,已经得到密码了,,得到图片
查看详细信息发现高度好像让改了
用winhex将高度改成和宽度一样保存就出现了flag
5.bugku web never give up
打开网页只有个这东西
查看源码
发现1p.html 访问后跳转到bugku主站了 用kali的curl直接查看1p.html的源码
ar words 里边是一段url编码进行解密
得到一段base64,进行解码
";if(!$_GET['id'])
{
header('Location: hello.php?id=1');
exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))
{
echo 'no no no no no no no';
return ;
}
$data = @file_get_contents($a,'r');
if($data=="bugku is a nice plateform!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
{
require("f4l2a3g.txt");
}
else
{
print "never never never give up !!!";
}
?>
可以看到f4l2a3g.txt 访问可得flag
6.bugku 过狗一句话
$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'])
?>
explode() 函数把字符串分割为数组。本函数返回由字符串组成的数组,其中的每个元素都是由 separator 作为边界点分割出来的子字符串。
eval,assert 这两个函数都有代码执行的漏洞,可以根据assert执行读取目录的代码
print_r(scandir('./')) 可以读取目录 则构造payload
?s=print_r(scandir('./'))
扫描目录并输出
访问f94lag.txt得到flag
7.
打开网页
1、preg_match()函数即正则表达式匹配函数
语法:preg_match( string pattern, string subject [, array matches ] )
string pattern 为正则pattern
string subject 为需要被匹配检索的对象
array matches 为存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推
2、trim()函数 移除字符串两侧的空白字符或其他预定义字符
语法:trim(string,charlist)
string 必选,规定要检查的字符串
charlist 可选,规定从字符串中删除哪些字符。如果被省略,则移除以下所有字符:
“\0” - NULL
“\t” - 制表符
“\n” - 换行
“\x0B” - 垂直制表符
“\r” - 回车
" " - 空格
3、正则表达式:
[[:punct:]] 任意匹配一个标点符号
/i 匹配不区分大小写
接着来看正则表达式 (更多:https://blog.csdn.net/qq_26090065/article/details/81606045)
/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i
. 匹配除 "\n" 之外的任何单个字符
* 匹配它前面的表达式0次或多次,等价于{0,}
{4,7} 最少匹配 4 次且最多匹配 7 次,结合前面的 . 也就是匹配 4 到 7 个任意字符
\/ 匹配 / ,这里的 \ 是为了转义
[a-z] 匹配所有小写字母
[:punct:] 匹配任何标点符号
/i 表示不分大小写
最重要的是学会正则表达式,,然后根据函数功能 构造payload
http://120.24.86.145:8002/web10/?id=keykeyaaaakey:/a/keya:
得出flag
查看源代码
看见一个code.txt然后就访问一下
在PHP中
MD5是不能处理数组的,md5(数组)会返回null,所以md5(a[])==null,md5(b[])==null,md5(a[])=md5(b[])=null,
所以 v1[]=1& v2[]=2
关于strcmp 有绕过的方法 只要构造一个数组或者一个object,就可以绕过。
strcmp(string1,string2) 参数类型是string
当这个函数接收到了不符合的类型数据,这个函数就会发生错误,显示报错的告警信息后,将 return 0 ,虽然报错,但是也被判断为相等。
所以就构造v3[]=3
所以最终结果就是
?v1[]=1&v2[]=2&v3[]=3
这里在code.txt这个页面传参数,没有反应,,然后回到之前那个页面进行传参得出flag
首先试了试注册,,注册账号为admin的时候显示是已注册过,说明有admin的账号,根据提示sql约束攻击,百度了一下sql约束攻击就是 当注册 admin 1(admin+空格+1)为帐号是,数据库为将这个账号以admin+空格的形式存在数据库中 因为对列的长对又要求 所有有很多空格时就存入了admin+空格,,此时数据库里就有’admin‘和’admin+空格‘这两个账号,用自己注册的密码 登录admin 会返回第一个账号的信息
https://www.cnblogs.com/ECJTUACM-873284962/p/8977983.html //sql约束攻击
注册账号admin 1
密码Aadmin123456
用账号admin
密码Aadmin123456登录成功