ctfshow pwn17-18

毛坯的人生和精裝的朋友圈

pwn17

 while ( 1 ){menu();v4 = 0;puts("\nEnter the command you want choose:(1.2.3.4 or 5)\n");__isoc99_scanf("%d", &v4);switch ( v4 ){case 1:system("id");break;case 2:puts("Which directory?('/','./' or the directiry you want?)");read(0, buf, 0xAuLL);strcat(dest, buf);system(dest);puts("Execution succeeded!");break;case 3:sleep(1u);puts("$cat /ctfshow_flag");sleep(1u);puts("ctfshow{");sleep(2u);puts("... ...");sleep(3u);puts("Your flag is ...");sleep(5u);puts("ctfshow{flag is not here!}");sleep(0x14u);puts("wtf?You haven't left yet?\nOk~ give you flag:\nflag is loading......");sleep(0x1BF52u);system("cat /ctfshow_flag");break;case 4:sleep(2u);puts("su: Authentication failure");break;case 5:puts("See you!");exit(-1);default:puts("command not found!");break;}}

當我們看到case3中的system("cat /ctfshow_flag");覺得穩了

但是前面的sleep(0x1BF52u)意思要等31個小時才能執行到這一步啊

所以我們看到了case2

? ?case 2:
? ? ? ? puts("Which directory?('/','./' or the directiry you want?)");
? ? ? ? read(0, buf, 0xAuLL);// 通過read()函數從標準輸入(stdin)中讀取用戶輸入,并將其存儲在名為“buf”的緩沖區中,并且限制了長度最多為0xA,即9

? ? ? ? strcat(dest, buf);//將用戶輸入的目錄追加到名為“dest”的已有字符串后面

? ? ? ? system(dest);
? ? ? ? puts("Execution succeeded!");
? ? ? ? break;

我們可以直接輸入/bin/sh來取得shell,因為//bin/sh可以執行sh命令

也可以直接;cat c*??

pwn18?

main

  puts("Which is the real flag?");__isoc99_scanf("%d", &v4);if ( v4 == 9 )fake();elsereal();system("cat /ctfshow_flag");return 0;
}

fack()

int fake()
{return system("echo 'flag is here'>>/ctfshow_flag");

real()

int real()
{return system("echo 'flag is here'>/ctfshow_flag");
}

>>的意思是在/ctfshow_flag后追加flag is here

>是直接覆蓋掉/ctfshow_flag的內容了

所以我們只需填9就可以了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/22206.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22206.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22206.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

克隆別人的項目并上傳到自己的倉庫

克隆別人的項目并上傳到自己的倉庫通常涉及以下步驟: 克隆項目:首先,你需要將別人的項目克隆到你的本地計算機。可以使用以下Git命令: git clone [項目的URL]將 [項目的URL] 替換為你想克隆的項目的URL。 創建新的倉庫&#xff1…

卡爾曼濾波算法的matlab實現

卡爾曼濾波算法的matlab實現 figure; hold on;Z(1:1:100); %觀測值:第一秒觀測1m 第二秒觀測兩米 勻速運動, 每秒1m, 最后擬合的也是速度 1m/splot(Z); plot([0,100], [1,1]);noiserandn(1,100)*0.5; %生成方差為1的高斯噪聲 ZZnoise; % 加入噪聲plot(Z);X[0;…

LabVIEW動態力傳感器校準系統

LabVIEW動態力傳感器校準系統 開發了一種基于LabVIEW的動態力傳感器校準系統。系統主要用于動態力的測量和校準,通過高度集成化和自動化的設計,顯著提升校準的效率和精確度。系統采用沖擊法進行動態校準,涵蓋了完整的硬件設計和軟件開發流程…

Kotlin 注解

文章目錄 定義注解類的注解標注目標聲明 定義 注解使用annotation關鍵字定義,且只能用于普通類,該類被稱為注釋類。可以使用注釋類為某個變量、函數、類、接口等注釋。與我們寫的代碼注釋類似,注釋類可以指明被標注類的狀態、作用等等&#…

智能體應用開發:構建各類垂直領域的ai智能體應用

最近在做個類似的項目,有用到這方面的知識,順便做一些記錄和筆記吧,希望能幫到大家了解智能體應用開發 目錄 引言 AI原生應用的興起 智能體在AI中的角色 實現原理詳解 機器學習基礎 數據管理與關聯數據庫 數據結構 Embedding 檢索方…

Pytorch實用教程:torch.cat()函數的用法詳解

torch.cat 是 PyTorch 中用于沿指定維度連接張量的函數。以下是該函數的詳細用法: 語法 torch.cat(tensors, dim=0, *, out=None)參數說明 tensors (sequence of Tensors): 要連接的張量序列。這些張量必須具有相同的形狀(除了連接的維度)。dim (int, optional): 沿著哪個…

衛星位置解算

前言: 本章節代碼均在Gitee中開源: 衛星位置計算代碼https://gitee.com/Ehundred/navigation-engineering/tree/master/%E5%8D%AB%E6%98%9F%E5%AF%BC%E8%88%AA%E5%8E%9F%E7%90%86/GPS%E5%8D%AB%E6%98%9F%E4%BD%8D%E7%BD%AE%E8%A7%A3%E7%AE%97/Satellit…

SAP物料自動記賬科目設置總結

SAP物料自動記賬科目設置總結 目錄 物料自動記賬科目設置總結... 1 總體說明... 1 庫存移動事務類型的設置... 4 庫存科目設置... 6 期初導入... 6 業務舉例... 6 配置... 6 庫存初始單據... 7 采購收貨(缺少到票) 8 業務舉例... 8 配置... 8 采購收貨單據-MIGO_GR…

心懷希望の光柵化

還記得什么是光柵化咩? 將三維空間的幾何形體顯現在屏幕上,這就是光柵化(游戲、實時圖形學的應用) Perspective Projection 在正交投影里如何定義三維空間中的立方體呢? 用x軸的覆蓋(左、右)…

【UML用戶指南】-02-UML基本元素的介紹(二)

目錄 1、語法和語義規則 2、UML中的公共機制 (1)規約 (2)修飾 (3)通用劃分 (4)擴展機制 衍型/版型/類型(stereotype) 標記值 (tagged val…

Java編程常見問題匯總四

系列文章目錄 文章目錄 系列文章目錄前言一、忽略所有異常二、重復包裝RuntimeException三、不正確的傳播異常四、用日志記錄異常五、異常處理不徹底 前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。…

[C/C++]_[初級]_[在Windows和macOS平臺上導出動態庫的一些思考]

場景 最近看了《COM本質論》里關于如何設計基于抽象基類作為二進制接口,把編譯器和鏈接器的實現隱藏在這個二進制接口中,從而使用該DLL時不需要重新編譯。在編譯出C接口時,發現接口名直接是函數名,比如BindNativePort,怎么不是_BindNativePort?說明 VC++導出的函數默認是使…

專轉本英語應該怎么學?

來吧,寶子們,學姐給你們分享專轉本英語如何備考的方法了,單詞+語法,兩不耽誤,快拿著你們的小手來截圖記筆記啦~ 1、基礎差直接背單詞 對于基礎差的人呢,本身我們對英語這個科目就不感…

Google Earth Engine精度評價方法

今天講講如何在GEE中做最后的精度評價。主要是因為在和許多讀者或通過交流群,或通過私聊溝通過程中,發現很多人還不是很理解在GEE中分類后精度評價的問題。 在進行評價之前,需要明晰在GEE中精度評價分為哪幾種情況。我們這里說的是兩種情況。…

收藏品NFT的開發流程

開發收藏品NFT的流程涉及多個階段,從概念化和設計到技術實現和市場推廣。以下是詳細的開發步驟,通過這些步驟,可以成功開發和發布收藏品NFT項目,吸引用戶和投資者,并確保項目的持續運營和成功。北京木奇移動技術有限公…

Fiddler入門(接口抓包及APP測試)

目錄 一、Fiddler基礎介紹 二、Fiddler的作用 三、Fiddler安裝 四、Fiddler界面功能介紹 1、界面介紹 1)、菜單欄介紹 2)、工具欄介紹 3)、會話欄介紹 五、Fiddler抓取https數據 (面試題) 六、Fiddler…

C++ lambda表達式的作用和代碼示例

Lambda 表達式是 C11 引入的一種匿名函數語法,它可以方便地創建臨時函數對象,用于在函數調用時作為參數傳遞或者作為局部函數使用。Lambda 表達式可以捕獲外部變量,并具有與普通函數相似的語法結構。 主要作用如下: 簡化代碼&am…

【刷題(17)】技巧

一 技巧基礎 二 136. 只出現一次的數字 1 題目 2 解題思路 哈希表map 其實看到題目數組中某個元素出現的次數也可以直接用unordered_map容器統計每一個元素出現的次數,然后在遍歷整個map容器查看是否有元素出現的次數等于1 3 code class Solution { public:in…

商城項目【尚品匯】07分布式鎖-2 Redisson篇

1 Redisson功能介紹 基于自定義setnx實現的分布式鎖存在下面的問題: 重入問題:重入問題是指 獲得鎖的線程可以再次進入到相同的鎖的代碼塊中,可重入鎖的意義在于防止死鎖,比如HashTable這樣的代碼中,他的方法都是使用…

LightGBM 進行回歸建模的流程

LightGBM 進行回歸建模的流程 文章最前: 我是Octopus,這個名字來源于我的中文名–章魚;我熱愛編程、熱愛算法、熱愛開源。所有源碼在我的個人github ;這博客是記錄我學習的點點滴滴,如果您對 Python、Java、AI、算法有…