日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

CG-CTF-Web-MYSQL

發布時間:2023/12/31 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CG-CTF-Web-MYSQL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MYSQL

1.題目

2.我們打開題目地址

3.看來有個robots.txt,我們來訪問一下,出現下圖所示

4.那我們接下來分析代碼:

<?php if($_GET[id]) {mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS); //連接數據庫mysql_select_db(SAE_MYSQL_DB); //選擇數據庫$id = intval($_GET[id]); //intval是將變量取整(注:如果變量是小數,那么變量小數位不能為0,如果為0,會被認為是整數)$query = @mysql_fetch_array(mysql_query("select content from ctf2 where id='$id'")); //sql查詢語句if ($_GET[id]==1024) { //如果id=1024,輸出no! try again,否則輸出查詢結果,這里應該是flagecho "<p>no! try again</p>";}else{echo($query[content]);} } ?>

5.根據以上代碼分析,這里是利用intval()函數來繞過,輸出flag。因此,url傳入id=1024.3,實現繞過if判斷,輸出flag

注:

  • 代碼主要函數語法

intval() 函數用于獲取變量的整數值。

intval() 函數通過使用指定的進制 base 轉換(默認是十進制),返回變量 var 的 integer 數值。intval()
不能用于object,否則會產生 E_NOTICE 錯誤并返回 1。

PHP 4, PHP 5, PHP 7

語法 int intval ( mixed $var [, int $base = 10 ] )

參數說明: $var:要轉換成 integer 的數量值。 $base:轉化所使用的進制。(默認是十進制)

如果 base 是 0,通過檢測 var 的格式來決定使用的進制: 如果字符串包括了 “0x” (或 “0X”) 的前綴,使用 16 進制
(hex);否則, 如果字符串以 “0” 開始,使用 8 進制(octal);否則, 將使用 10 進制 (decimal)。 返回值
成功時返回 var 的 integer 值,失敗時返回 0。 空的 array 返回 0,非空的 array 返回 1。

最大的值取決于操作系統。 32 位系統最大帶符號的 integer 范圍是 -2147483648 到
2147483647。舉例,在這樣的系統上, intval(‘1000000000000’) 會返回 2147483647。64
位系統上,最大帶符號的 integer 值是 9223372036854775807。

字符串有可能返回 0,雖然取決于字符串最左側的字符。

特別注意:除非 var 是一個字符串,否則 base 不會起作用。也就是說如果第一個參數不是字符串,那么第二個參數的進制就無效,即默認取整后,讓取整后的數當做10進制數轉換成10進制數,也就是本身了…
但有特例,正如上面所說,如果base為0,就自動檢測var參數,0開頭,當做8進制數,0x開頭當做16進制數

  • 舉例:
<?php echo intval(42); // 42 echo intval(4.2); // 4 echo intval('42'); // 42 echo intval('+42'); // 42 echo intval('-42'); // -42 echo intval(042); // 34 echo intval('042'); // 42 echo intval(1e10); // 1410065408 echo intval('1e10'); // 1 echo intval(0x1A); // 26 echo intval(42000000); // 42000000 echo intval(420000000000000000000); // 0 echo intval('420000000000000000000'); // 2147483647 echo intval(42.88, 8); // 42//思路:這里是先將42.88取整,取整后為42,因為不是字符串,將42當做10進制數轉換,轉換成10進制數,也就是本身,最后結果42 echo intval('42', 8); // 34//思路:因為這個是字符串,base有效,將42當做8進制數轉換成十進制數 echo intval(array()); // 0 echo intval(array('foo', 'bar')); // 1 ?>

記住一點,以指定進制轉換后,最后選擇的結果數都是10進制數,例:
因為非字符串無效,這里,我就選擇字符串

<?php echo intval('42.88', 16);//66 echo intval('22.22',6);//18 ?>


總結

以上是生活随笔為你收集整理的CG-CTF-Web-MYSQL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。