web安全CTF比赛习题(高级)详解程序员

一、fuzzing

访问目标网址,“there is nothing ”,小编心想,没东西是不是可以不做了?
当然是不可能了,年轻人想想就好了,何必当真呢

这里写图片描述
burp抓包查看响应情况,初看好像没什么,这个时候拼什么呢,拼的是小编的这份细心了,看见小编圈起来的了嘛,很有用哦
这里写图片描述
伪造一个IP,查看响应,出现了一个“m4nage.php”,进行访问,继续抓包
这里写图片描述
继续伪造IP,可以看到回显内容“show me you key”
这里写图片描述
任意构造一个key值,继续伪造IP,发包访问,可以看到回显了找到正确的key的方法
这里写图片描述
破解key值得python代码如下,破解出来的key值为“ichunqiu618ok”

import hashlib 
def md5(data): 
    m = hashlib.md5() 
    m.update(data) 
    a = m.hexdigest() 
    return a 
 
a = 'ichunqiu' 
b = 'abcdefghijklmnopqrstuvwxyz1234567890' 
for i in b: 
    for j in b: 
        for k in b: 
            for l in b: 
                for m in b: 
                    if md5(a+i+j+k+l+m)=='5a2a7d385fdaad3fabbe7b11c28bd48e': 
                        print a+i+j+k+l+m

传入正确的key值后,回显了一个php文件
这里写图片描述
继续burp抓包,伪造IP访问,得到一个“x0.txt”文件
这里写图片描述
访问是一段php的源码函数,复制到本地,对代码进行修改,在最后对函数进行echo输出。
这里写图片描述
本地网页访问代码,即可得到flag信息
这里写图片描述

二、pyscript

访问目标网址,很有趣的界面,“input your answer”,那么到底输入什么呢,小编也不知道,只有继续乱翻翻看了
这里写图片描述
查看网页源代码,小编发现了一个重要的线索(很重要哦),不过看完之后看来小编还是逃不了代码的命了
这里写图片描述
破解代码python,如下

import urllib,urllib2,json 
import hashlib 
import re 
import requests 
 
url = 'http://106.75.108.111:1111' 
 
def sha_1(data): 
    sha_1 = hashlib.sha1() 
    sha_1.update(data) 
    sha = sha_1.hexdigest() 
    return sha 
 
def key(key1,key2): 
    c='0123456789' 
    str1 = key1 
    cipher = key2 
    for i in c: 
        for j in c: 
            for k in c: 
                if sha_1(i+j+k+str1) == cipher: 
                    # print (i+j+k) 
                    return i+j+k 
def get_info(): 
    r = requests.post("http://106.75.108.111:1111") 
    key2 = r.headers['Ciphertext'] 
    cookies = r.cookies 
    html = r.text 
    res = r'/+(.*?)/)' 
    key1 = re.findall(res,html)[0] 
    print key1 
    return key1,key2,cookies 
 
def postx(number,cookies): 
    cookies = cookies 
    values={'pass':number} 
    response = requests.post("http://106.75.108.111:1111",cookies=cookies,data=values) 
    return response.text 
 
def sum(text): 
    res = r'<!--.*?([/d/+/-/*]+).*?-->' 
    key3 = re.findall(res,text)[0] 
    result = eval(key3) 
    return result 
 
 
if __name__ == '__main__': 
    (key1,key2,cookies)=get_info() 
    number = key(key1,key2) 
    result1 = postx(number,cookies) 
    result2 = sum(result1) 
    print result2 
    print postx(result2,cookies)

直接运行,滴滴滴,flag信息瞬间就出来了呢
这里写图片描述

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/2469.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论