這是一道比較簡單的PWN題目,首先拖到IDA裡簡單看了一下程序,如圖
發現在讀取,沒有堆疊保護,所以,在read0x34時,可能會替換game返回址址,先透過write(1,write,4)(game作為write回傳地址)。這樣讀出write位址,這樣就可以得到system位址,因為又循環運作了,同樣在0x804A06C寫入/bin/sh\0,這樣system就能運作。
Pythonexp如下:
frompwn import *
#defrungameAgainPoc(p,yourname,flag):
p.recvuntil("First,what's your name? \n")
p.send(yourname "\n")
p.recvuntil("doyou want to get flag?\n")
p.send (flag)
pwnelf= ELF("./pwn")
libcelf= ELF("./libc-2.23.so")
#gameadd= 0x080485CB
!
#plt_write= pwnelf.symbols['write']got_write= pwnelf.got['write']
## cover("0100070D020108080D000103040D0303")
cover("02080602")## cover("02080602")## cover("02080602")## cover("02080602")## 50 0D02")
#printlen(var_6c)
byte_402178= """02 02 02 02 03 01 01 02
0101 02 01 01 00 01 01 02 02 00 01 01 00 01 01 02 02 00 01 01 01 01 01 0102 02 00 01 01 01 01# 0101120102 01 02 02 01 01 01 01 01 02 01
0103 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00#100 1 02 0D 07 00 01
060C 01 07 0B 00 06 02 01 06 01 07 02 0D 05 01
0000 00 00 EF 28 68 5000 4800 00 00 E4 22 00 00 E4 16 00 00 00 00 00 00
EF28 68 5B 00 00 00 00 0C 00 00 00 10 00 00 00 00 00 00 00 00 00 EF 28 68 5B
0000 00 00 0D 00 00 00 54 02 00 00 40 23 00 00
4017 00 0 00
0E00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
A000 00 00 00 00 00 00
#A000 00 00 00 00 00 00#A000 00 000000# 00 00 00 00 00 00 00 00 00 00 00 00
0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000 000# 0 00 00 00 00 30 40 00
E022 40 00 01 00 00 00 E8 20 40 00 00 00 00 00
0000 00 00 00 00 00 00 00 01 00 00 00 00 00 00
0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000 00 00 00 00 00 00 0#0#0000 00# 00 00 00 00 00 00 00 00 00 00 00
0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00"""#replace"#. ("\r","").replace("\n","").decode("hex")
byte_402138= """00 00 00 00 01 00 00 00
## ##0200 00 00 03 00 00 00 04 00 00 00 05 00 00 00######0600 00 00 07 00 00 00 0#08 0090 00 07 000# 00 00 00 0C 00 00 00 0D 00 00 00######0E00 00 00 0F 00 00 00"""###.replace("","").replace("\r","").replace("\n","").decode("hex")
dword_403018=" ""0200 00 00 02 00 00 00
0200 00 00 02 00 00 00 00 00 00 00 00 00 00 00##place#place#"".re.(place#" ("\r","").replace("\n","").decode("hex")
#text:0040110E mov ecx, [ebp var_4]
.text:00401111 xor ecx, ebp.text:00401113 111D mov dword_403020, 6#.text:00401127 mov dword_403024, 7#記憶體值有改變,所以修改一下dword_403018= dword_403018[0:4] '\x03' dword_403018[5:8]## '\x06' dword_403018[9:12] '\x07'
dword_403018[13:]
printdword_403018.encode("hex")
printdword_403018.encode("hex")
dword_403018.encode("hex") ,42):
hightnum= ord(dword_403018[ord(byte_402178[i])*4])
numbershow= hightnum ord(byte_402138[# numbershow= hightnum ord(byte_402138[ ])*4])
printchr(numbershow),
#flag{06b16a72-51cc-4310-88ab-70ab68290e22}
#0x03 sqli
#0x03 sqli#0x03 sqli
#0x03 sqli#0x03 sqli
#0x03 sqli#0x03 sqli
#C問題。是sql約束攻擊,註冊用戶名為“admin ”,密碼為符合規定的密碼就可以,然後登陸就能看到flag
flag{b5a1f9c5-ac30-4e88-b460-e90bcb65bd70}
0x04 RSA
opensslrsa -inform PEM -in pubkey1.pem -pubin -text
Public-Key:(2048 bit)
Modulus:
00:89:89:a3:98:98:84:56:b3:fe:f4:a6:ad:86:df:
3c:99:57:7f:89:78: 04:8d:e5:43:6b:ef:c3:0d:8d:
8c:94:95:89:12:aa:52:6f:f3:33:b6:68:57: 30:6e:
bb:8d:e3:6c:2c:39:6a:84:ef:dc:5d:38:25:02:da:
a1:a3: f3:b6:e9:75:02:d2:e3:1c:84:93:30:f5:b4:
c9:52:57:a1:49:a9:7f:59:54: ea:f8:93:41:14:7a:
dc:dd:4e:95:0f:ff:74:e3:0b:be:62:28:76:b4:2e:
ea:c8:6d:f4:ad:97:15:d0:5b:56:04:aa:81:79:42:
4c:7d:9a:c4:6b: d6:b5:f3:22:b2:b5:72:8b:a1:48:
70:4a:25:a8:ef:cc:1e:7c:84:ea:7e:5c: e3:e0:17:
03:f0:4f:94:a4:31:d9:95:4b:d7:ae:2c:7d:d6:e8:
79: b3:5f:8a:2d:4a:5e:fb:e7:37:25:7b:f9:9b:d9:
ee:66:b1:5a:ff:23:3f:c7: 7b:55:8a:48:7d:a5:95:
2f:be:2b:92:3d:a9:c5:eb:46:78:8c:05:03:36:b7:
e3:6a:5e:d8:2d:5c:1b:2a:eb:0e:45:be:e4:05:cb:
# e7:24:81:db: 25:68:aa:82:9e:ea:c8:7d:20:1a:5a:
8f:f5:ee:6f:0b:e3:81:92:ab:28:39: 63:5f:6c:66:
42:17
Exponent:2333 (0x91d)
opensslrsa -inform PEM -in pubkey2.pem -pubin -text
opensslrsa -inform PEM -in pubkey2.pem -pubin -textPublic-Key:(2048 bit)Modulus: 00:89:89:a3:98:98:84:56:b3:fe:f4:a6: ad:86:df: 3c:99:57:7f:89:78:04:8d:e5:43:6b:ef:c3:0d:8d:# 8c: 94:95:89:12:aa:52:6f:f3:33:b6:68:57:30:6e: bb:8d:e3:6c:2c:39:6a:84: ef:dc:5d:38:25:02:da: a1:a3:f3:b6:e9:75:02:d2:e3:1c:84:93:30:f5:b4: c9:52:57:a1:49:a9:7f:59:54:ea:f8:93:41:14:7a: dc:dd:4e:95: 0f:ff:74:e3:0b:be:62:28:76:b4:2e: ea:c8:6d:f4:ad:97:15:d0:5b:56:04: aa:81:79:42: 4c:7d:9a:c4:6b:d6:b5:f3:22:b2:b5:72:8b:a1:48:# 70:4a:25:a8:ef:cc:1e:7c:84:ea:7e:5c:e3:e0:17: 03:f0:4f:94:a4:31:d9: 95:4b:d7:ae:2c:7d:d6:e8: 79:b3:5f:8a:2d:4a:5e:fb:e7:37:25:7b:f9:9b: d9: ee:66:b1:5a:ff:23:3f:c7:7b:55:8a:48:7d:a5:95:###### 2f:be:2b: 92:3d:a9:c5:eb:46:78:8c:05:03:36:b7:###### e3:6a:5e:d8:2d:5c:1b:2a:eb:0e: 45:be:e4:05:cb:###### e7:24:81:db:25:68:aa:82:9e:ea:c8:7d:20:1a:5a:#### ## 8f:f5:ee:6f:0b:e3:81:92:ab:28:39:63:5f:6c:66:###### 42:17######Exponent:23333# 42:17######Exponent:23333# 42:17######Exponent:23333# (0x5b25).######可見,這兩個公鑰n是一樣的,只是e不同,使用RSA的共模攻擊######Python如下:######fromlibnum import n2s ,s2n######fromgmpy2 import invert######importbase64######importgmpy2######defbignumber(n):###### n= n.decode("hex ")###### rn= 0###### forb in n:###### rn= #lt; bb:8d:e3:6c:2c:39:6a:84:ef:dc:5d:38:25:02:da:a1:a3:f3:b6:e9:75 :02:d2:e3:1c:84:93:30:f5:b4:
c9:52:57:a1:49:a9:7f:59:54:ea:f8:93:41 :14:7a:
dc:dd:4e:95:0f:ff:74:e3:0b:be:62:28:76:b4:2e:
ea:c8 :6d:f4:ad:97:15:d0:5b:56:04:aa:81:79:42:
4c:7d:9a:c4:6b:d6:b5:f3:22 :b2:b5:72:8b:a1:48:
70:4a:25:a8:ef:cc:1e:7c:84:ea:7e:5c:e3:e0:17:
03:f0:4f:94:a4:31:d9:95:4b:d7:ae:2c:7d:d6:e8:
# 79:b3:5f:8a:2d :4a:5e:fb:e7:37:25:7b:f9:9b:d9:
ee:66:b1:5a:ff:23:3f:c7:7b:55:8a:48 :7d:a5:95:
2f:be:2b:92:3d:a9:c5:eb:46:78:8c:05:03:36:b7:
# e3 :6a:5e:d8:2d:5c:1b:2a:eb:0e:45:be:e4:05:cb:
e7:24:81:db:25:68:aa:82 :9e:ea:c8:7d:20:1a:5a:
8f:f5:ee:6f:0b:e3:81:92:ab:28:39:63:5f:6c:66 :42:17"""
.replace(":",").replace("",").replace("\r",").replace("\n" ,"" )
##printn
n =bignumber(n)
printhex(n)
e1= 2333
#e2 =23333
defegcd(a,b):
ifa == 0:
return(b,0,1)
else:
g,y,x=egcd(b%a,a)
return(g,x - (b //a)*y,y)
#flag1 = base64 .b64decode (open("flag1.enc","rb").read())
flag2 = base64.b64decode(open("flag2.enc","rb").read())
c1= s2n(flag1)
c2= s2n(flag2)
c2= 反轉(c2,n)
##s= egcd(e1, e2)
#列印
s =gmpy2.gcdext(e1,e2)
##列印
s1= s[1]
s2= 0 - s[2]
prints1
prints2
m =pow(c1,s1,n) * pow(c2,s2,n) % n
printn2s(m)
flag{4b0b4c8a-82f3-4d80-902b-8e7a5706f8fe}
0x05 拋磚引玉
#1.根據版本,
1.根據版本,##在wooyun鏡像站找到漏洞細節,網站存在註入,但是資料庫使用者表為空,另外發現發現檔案下載漏洞,down.php?urls=data/../config .php下載檔案發現DB_user/mvoa使用者的密碼define('DB_PWD','B!hpp3Dn1.');flag值:B!hpp3Dn1.2.http://url/www.zip,取得網站備份文件,在config.php中找到DB_user/root使用者的密碼define('DB_PWD','mypasswd' ); flag值:mypasswd0x06暗度陳列1.發現下載路徑/u-are-admin/download.php?dl= 顯示檔案查找(u-Are-Admin/u-upload-file資料夾),找到關鍵目錄/u-Are-Admin/flag值:/u-Are-Admin /2.在/u-Are-Admin/目錄,可以上傳文件,上傳Php(大小寫繞過)文字木馬,菜刀鏈接,netuser查看系統管理員Hack用戶的全名
flag: Hacked3563.c771f0x07瞞天過海
## 1 1awvs 掃到注入點
##/Cat.php? ID = 2## SQLMAP 直接功能, , 透過即刻取得後台明文密碼, , , , , , , , , , , , , serverlog
flag 值:serverlog
#2.注入root的密碼hash,
*21C5210729A90C69019F01FED76FAD4654F27167
然後cmd5解密得rootserver
#flag值:rootserver
3.內容
/classes/downloadfile .php?file=../../../../../../password.txt
flag值:c9c35cf409344312146fa7546a94d1a6
#0x08 偷梁換柱換柱
# 1.AWVS掃到./git源碼洩露,用工具GitHack下載所有源碼,在資料庫檔案中找到用戶名,密碼(adminAdmin@pgsql)
flag值:Admin@pgsql
2 .掉小,即使檔案真正地址,
/admin/uploads/111.php.png
# 。
3. 菜刀能夠直接查看/tmp/access 16位元
##0x09 .log的內容的前16位元
0x09 ,然後getshell,建構路徑為
url/info/include.php?filename=..//sjk-uploads/UareHack.txt
#密碼是a,得到shell取得可以phpStudy目錄下Documents.txt的內容
2.取得shell可以取得ichunqiu使用者桌面根目錄password.txt的內容
3.getshell後,傳msf木馬無法反彈,最後使用QuarksPwDump HASH,線上破解取得密碼
78beaa5511afa889b75e0c8d76954a50:4ffe895918a454ce0f872dad8af0b4da:::
flawe值:123q#
以上是如何分析CTF題的writeup的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。