本文转载http://pupiles.com/shiyanbanwirteup.html
Web01
第一题先看源码,得到发现可以用常规思路万能密码绕过
构造
username=’ or ‘1’=’1’#
Password随便即可绕过
即可构造出select * from users where name = ‘’ or ‘1’=’1’#andxxxxx
因为#是注释所以注释掉了后面语句

得到flag
flag{justForTestL0g1n}
WEB7
第二题可以构造后台语句
Username=0 union select 1,2,md5(1)#
Password=1
绕过,得到flag
这里可以先猜测数据库有3列,id,username,password,然后通过联合查询使password字段为1的md5值
这样通过输入password=1可以实现经过后台逻辑判断可以绕过。
flag{Second2@16L0g1n}
WEB05
上御剑

访问robots.txt

访问flag.txt
Web04
这题一开始没啥思路,上御剑扫目录
结果发现一个.index.php.swp源码泄露
先贴一下源码
12345678910111213141516171819202122232425262728293031
if ("POST" == $_SERVER['REQUEST_METHOD']) { $password = $_POST['password']; if (0 >= preg_match('/^[[:graph:]]{16,}$/', $password)) { echo '鐪熺殑鍚楋紒锛 '; exit; } while (TRUE) { $reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/'; if (6 > preg_match_all($reg, $password, $arr)) break; $c = 0; $ps = array('punct', 'digit', 'upper', 'lower'); foreach ($ps as $pt) { if (preg_match("/[[:$pt:]]+/", $password)) $c += 1; } if ($c < 3) break; if ("2017" == $password) { include_once("flag.php"); echo $flag; } else echo 'Duang锛侊紒锛 '; exit; } } ?>
审计源码,这里我不知道graph是啥意思(后来知道了是除(空格键与[TAB]键)之外的所有按键) )。只好fuzz,fuzz了半天发现原来是要输入超过16位,而且必须结果等于2017,这里我当时想到了俩个思路一个是0x7E1另外一个是2017.0000000000000000001
后面有说必须要有标点,大小写,数字一大堆的,了解了原理,本地搭建一个环境进行fuzz一下

结果发现本地fuzz出一个,结果弄进去不给我过ORZ
1
0x7E1&111111111111
继续fuzz半天发现了一个发现2017.0000000000是等于2017然而缺少字母,想到了eN等于10的N次方
所以最后的payload
1
20170.000000000000000000000e-1
web02 抽奖
这题没毛病,以前打陕西省网络空间安全的时候做的题,这次再做的时候莫名其妙找不到JSFuck了,晕,幸好本地正好直接有当时的wp,随手试了试了一下当时的flag发现直接可以过,(吐槽一下出题人真是懒,flag都没改)这里贴一个链接,感兴趣的小伙伴可以去看一下http://blog.csdn.net/qq_35078631/article/details/70256502
Web03
这题没撸了好长没弄出来,就先说一下思路吧,首先御剑扫到了一个flag.php,所以我们尝试读取flag.php,但是好像做了黑名单检测,就是读不了,这里我尝试了一下../发现貌似会被替换为空,然而放在tes../t.txt文件就不存在了,ORZ。然后00截断啥的尝试了一下也没啥用就放弃了。。
cipher0x
第一题提示放射密码,直接用上学期老胡布置的作业的完整版本程序跑一下就好了,源码如下
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
#include#include#include#includevoid sttub(int t,int s);void sttuben();void sttuban();char p[1000],str[1000]={0},q[1000]={0};int count[26]={0},k1[12]={1,3,5,7,9,11,15,17,19,21,23,25};int k2,k3,c,i,n,t,s,ch;int main(){ printf("选择一种模式:1—>加密,2—>解密,3—>暴力破解,4—>字频破解
"); scanf("%d",&c); switch(c) { case 1: { system("color E"); printf("请输入明文
"); fflush(stdin); gets(p); ch=strlen(p); printf("请输入密钥
"); scanf("%d,%d",&t,&s); for(n=0;nif((p[n]>=
'A')&&(p[n]<=
'Z')) str[n]=(t*(p[n]-
'A'+s))%
26+
'A';
else if((p[n]>=
'a')&&(p[n]<=
'z')) str[n]=(t*(p[n]-
'a'+s))%
26+
'a';
else str[n]=p[n]; }
printf(
"密文:%s
",str); }
break;
case 2: { system(
"color A");
printf(
"请输入密文
"); fflush(
stdin); gets(p); ch=
strlen(p);
printf(
"请输入密钥
");
scanf(
"%d,%d",&t,&s); sttub(t,s);
printf(
"%s
",str); }
break;
case 3: { system(
"color C"); fflush(
stdin);
printf(
"请输入需要破解的密文
"); gets(p); ch=
strlen(p); sttuben(); }
break;
case 4: { system(
"color E");
printf(
"请输入需要破解的密文
"); fflush(
stdin); sttuban(); } }}
void sttub(int t,int s){
for(k3=
0;k3<
1000;k3++)
if((t*k3)%
26==
1)
break;
for(n=
0;n
if((p[n]>='A')&&(p[n]<='Z')) str[n]=(k3*(p[n]-'A'-s)+2600000)%26+'A'; else if((p[n]>='a')&&(p[n]<='z')) str[n]=(k3*(p[n]-'a'-s)+2600000)%26+'a'; else str[n]=p[n]; }}void sttuben(){ for(i=0;i<12;i++) for(k2=0;k2<26;k2++) { sttub(k1[i],k2); if(strstr(str,"FLAG")||strstr(str,"flag")) printf("该句含FLAG: { %s }
",str); else printf("%s ",str); }}void sttuban(){ int x,y; int max=0,min=100000; gets(p); ch=strlen(p); for(i=0;itoupper(p[i]); for(i=0;iif((q[i]>='A')&&(q[i]<='Z')) count[q[i]-'A']++; for(i=0;i<26;i++) { if(count[i]>max) { max=count[i];x=i; } if(count[i]for(i=0;i<12;i++) for(k2=0;k2<26;k2++) if((x==((k1[i]*('E'-'A')+k2)%26))&&((y==((k1[i]*('Z'-'A')+k2)%26)))) { t=k1[i];s=k2; printf("%d %d
",t,s); break; } sttub(t,s); printf("%s
",str); for(i=0;i<26;i++) printf("%c-->%d
",i+'A',count[i]);}
网信 007
这题用wireshark追踪一下tcp流,在发现传输了一个hello.txt和secret.png的图片,在20流左右发现了png的16进制右键以原始数据流的形式提取出来,打开发现flag
真有这么难?
这题真的不记得了,下载下来发现有个zip,好像flag.txt藏在其中一个文件夹里面
编程小练习
只能说这题太恶心了,最后一次机会才试出来,差点给跪,原来要加flag{Akye}
123
str = 'balabalabalabala'print str[98]+str[300]+str[1200]+str[1332]