sec-T ctf web300&PDF stego write up

这个比赛我也不知道为啥就上车了,web3居然用了一种没有用过的数据库,之后再看wp,学到一种新姿势。

web300

这道题开始给了一个购物页面,原本你只有$100,在购物哪里你可以买到三种物品,包括有一个110的东西,首先,我尝试了一下条件竞争,但是很不幸的是不能通过竞争来实现,之后开始进行信息搜集,发先其中一个js脚本。

function searchOrder(){
        searchResult.innerText = "searched for "+search.value
    }

    var orderSearch = `
    query fetchOrder($searchTerm: String!) {
      findOrder(orderId: $searchTerm) {
        productId
      }
    }`

    var productSearch = `
    query fetchProduct($searchTerm: Int!) {
        findProduct(productId: $searchTerm) {
            name
            desc
            image
            price
        }
    }`

    function searchOrder() {
        var searchTerm = search.value;
        var payload = {
            query: orderSearch,
            variables: JSON.stringify({
                searchTerm: searchTerm,
            })
        }

        $.post("/graphql", payload, function(response) {
            if (response.errors || response.data.findOrder == null) {
                searchResult.innerText = "ERROR";
            } else {
                searchTerm = response.data.findOrder.productId;
                payload = {
                        query: productSearch,
                        variables: JSON.stringify({
                            searchTerm: searchTerm,
                        })
                    };
                $.post("/graphql", payload, function(response){
                    if (response.errors){
                        searchResult.innerText = "ERROR";
                    }else{
                        product = response.data.findProduct;
                        searchResult.innerHTML = `
                        <TABLE BORDER="1">
                            <TR>
                            ...

通过查询得到 而且,我们有3个方法来对后天进行请求, 而且只有deleteOrder会将钱返还给我们。 于是,我们发送请求

mutation{
   deleteOrder(orderId: "some_order_id_string", userId : some_user_id_int)
   {
       success
   }
}

获得多余的钱来购买flag。

qproximity

在附件中只给了一个n,之后得到一个十分大的n以及并不小的e

n = 2462649746477364143454082050368305440553491900304388646893610847386194301369924385009730987303651345060031438478297733694036327257723431468649220444397635127530301992505638291521092898714917678389314956983918603221732358628680256253537449204312287724750669208856634711056863315465220853759428826555838536733

其他什么都没有给,所以我们考虑一下短素数攻击 上脚本

import gmpy

a = gmpy.sqrt(n)
b = a*a - n
c = gmpy.sqrt(b)
p = a+c
q = a-c
print q,p

得到p,q,这样就可以得到秘钥

Sprinkler system

先看一波robots.txt 得到/cgi-bin/test-cgi

通过这个接口可以列出目录

发现了一个特别的网页 enable_sprinkler_system

直接可以得到flag